【发布时间】:2015-12-20 08:38:20
【问题描述】:
我正在使用 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<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.
如何让它发挥作用?
【问题讨论】:
-
Tiwari,请问您是否希望将 image_url 附加到 /post/addphoto url?
-
@cgr 不,我不想附加它。实际上,image_url 是来自 facebook 的图像的 url,我想将其与其他一些字段一起存储在后端。 Place 对象是我从 facebook 中提取的与该图像相关联的位置。
-
据我所知,您需要将这种情况视为您在请求中只有一个位置来保存数据,它将是 RAW (body) 或 Form-shaped (FormUrlEncoded +Part) 所以这里就像你试图在一个地方混合 2 个数据结构,这是无法完成的
-
您的后端需要什么数据格式? FormUrlEnceode 应仅用于表单类型。您的后端需要表单数据?