当前位置:  开发笔记 > 编程语言 > 正文

在Retrofit中一起使用@Field和@Body参数

如何解决《在Retrofit中一起使用@Field和@Body参数》经验,为你挑选了1个好方法。

我正在使用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, Callback 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 response);

我收到此错误:

@FormUrlEncoded or @Multipart can not be used with @Body parameter.

我如何使其工作?



1> Amit Tiwari..:

最后,让它发挥作用.@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 response);

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

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

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有