2015-12-20 14 views
5

Bazı bilgileri POST'a yedeklemek için arka uçuma kullanıyorum. 3 Strings ve bir özel Place nesnesi göndermem gerekiyor. İşte ben ne yapıyorum: Ben böyle, @FormUrlEncoded kullandığınızda@Field ve @Body parametrelerini birlikte kullanıp, birlikte Retrofit'i kullanıyorum

@Field parameters can only be used with form encoding. 

Ve: Bununla

@POST("/post/addphoto/") 
    public void addImage(@Field("image_url") String url, @Field("caption") String caption, @Field("google_place_id") String placeId, @Body Place place, Callback<UploadCallBack> response); 

, bu hatayı alıyorum

@FormUrlEncoded 
@POST("/post/addphoto/") 
     public void addImage(@Field("image_url") String url, @Field("caption") String caption, @Field("google_place_id") String placeId, @Body Place place, Callback<UploadCallBack> response); 

bu hatayı alıyorum :

( ) 10 Nasıl çalışırım?
+0

Tiwari/post/addphoto url'ye eklenecek? – cgr

+0

@cgr Hayır, bunu eklemek istemiyorum. Aslında, image_url, arka planında diğer bazı alanlarla birlikte saklamak istediğim facebooktan bir resmin URL'si. Yer nesnesi, facebook'tan çıkarılan bu görüntü ile ilişkili konum için aldığım şeydir. –

+0

bildiğim kadarıyla, bu durumda, verileri talepte tutmak için sadece 1 yeriniz varmış gibi görünmelisiniz, ya RAW (gövde) ya da Form şeklinde (FormUrlEncoded + Part) olacak. 2 veri yapısını tek bir yerde karıştırmaya çalışıyorsunuz, bu, – Yazan

cevap

2

Sonunda işe yaradı. @Body ve @Field birlikte kullanılamaz. @Body kullanılıyorsa, bu tek parametre olmalı ve @FormUrlEncode veya @MultiPart ile birleştirilemez. Yani bu fikri bıraktı. Başka bir seçenek sadece @Field kullanmak ve Place nesnesini bir JSON dizesi olarak göndermekti. İşte

Ben API arayüzü için yaptıklarını geçerli:

@POST("/post/addphoto/") 
    public void addImage(@Field("image_url") String url, @Field("caption") String caption, @Field("google_place_id") String placeId, @Field("facebook_place") String place, Callback<UploadCallBack> response); 

Ve bu facebook_place alan için gönderilecek değeri yarattı nasıl şudur: IMAGE_URL istiyorsanız, biliyorum edebilir

Place place = ... 
Gson gson = new GsonBuilder().disableHtmlEscaping().create(); 
String placeJSON = gson.toJson(place); 
İlgili konular