同时使用改装中的@Field和@Body参数



我正在使用改装将一些数据POST到后端。我需要发送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, Callback<UploadCallBack> response);

有了这个,我得到了这个错误:

@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, Callback<UploadCallBack> response);

我得到这个错误:

@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, Callback<UploadCallBack> response);

这就是我为facebook_place字段创建要发送的值的方式:

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

最新更新