我正在使用Retrofit将一些数据发送到我的后端.我需要发送3个字符串和一个自定义的Place对象.这是我在做的事情:
@POST("/post/addphoto/") public void addImage(@Field("image_url") String url, @Field("caption") String caption, @Field("google_place_id") String placeId, @Body Place place, Callbackresponse);
有了这个,我收到这个错误:
@Field parameters can only be used with form encoding.
当我使用时@FormUrlEncoded
,像这样:
@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, Callbackresponse);
我收到此错误:
@FormUrlEncoded or @Multipart can not be used with @Body parameter.
我如何使其工作?
最后,让它发挥作用.@Body和@Field不能一起使用.如果正在使用@Body,它应该是唯一的参数,不能与@FormUrlEncode或@MultiPart结合使用.所以放弃了这个想法.另一种选择是仅使用@Field并将Place对象作为JSON字符串发送.
这是我为API接口所做的:
@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, Callbackresponse);
这就是我创建要为facebook_place
字段发送的值的方式:
Place place = ... Gson gson = new GsonBuilder().disableHtmlEscaping().create(); String placeJSON = gson.toJson(place);