Sto utilizzando Retrofit per inviare alcuni dati al mio back-end. Devo inviare 3 stringhe e un oggetto posto personalizzato. Ecco quello che sto facendo:Utilizzare i parametri @Field e @Body in Retrofit insieme
@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);
Con questo, sto ottenendo questo errore:
@Field parameters can only be used with form encoding.
E quando uso @FormUrlEncoded
, in questo modo:
@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);
ottengo questo errore :
@FormUrlEncoded or @Multipart can not be used with @Body parameter.
Come posso farlo funzionare?
Tiwari, si può sapere se si desidera image_url essere aggiunto a/post/URL di addphoto? – cgr
@cgr No, non voglio aggiungerlo. In realtà, image_url è l'URL di un'immagine di Facebook che voglio archiviare in back-end insieme ad altri campi. L'oggetto Place è ciò che ottengo per la posizione associata a quell'immagine, estratta da Facebook. –
per quanto ne so, è necessario considerare la situazione come se si avesse solo 1 posto per contenere i dati nella richiesta, sarà RAW (corpo) o Form-shaped (FormUrlEncoded + Part) quindi qui è come stai provando a mixare 2 strutture dati in un posto, non è possibile farlo – Yazan