如何使用Retrofit在Multipart-form请求中发送POJO对象?

时间:2015-07-13 03:17:16

标签: java android retrofit pojo multipartform-data

我正在尝试使用Multipart-formRetrofit请求中发送以下内容:

{ "attachment": { 
    "file_cache": "....."
    "original": "upload/image.png",
    "versions": {
        "small": "uploads/small_image.png"
    }
    },
  "content": "",
  "id": 1
}

我不知道这是否是我应该发送给API的正确请求,因为他们的文档非常糟糕但我能够使用Chrome开发工具来研究API接收请求的明智要求以及如何它在响应,似乎接受了JSON。

这是我观察到的照片:

enter image description here

他们的文档仅指出"attachment"应该是一个对象。

enter image description here

是否可以在POJO请求中发送multipart-form个对象?我的REST界面如下所示:

@Multipart
@POST("/v2/{type}/{id}/message.json")
void addMessage(@Path("type") String type,
                @Path("id") int id,
                @Part("content") String content,
                @Part("attachment") MultipartTypedOutput multipartTypedOutput,
                Callback<Post> callback);

发送MultipartTypedOutput没有用,也没有使用以下内容:

addMessage(...., @Part("attachment") POJOObject object, ...);

关于如何实现这一目标的任何想法?

如果我尝试使用422发送POJO对象,则会收到状态Retrofit不可处理的实体。

2 个答案:

答案 0 :(得分:1)

您是否尝试过TypedFile?如果不这样试试,

@Multipart
@POST("/v2/{type}/{id}/message.json")
void addMessage(@Path("type") String type,
                @Path("id") int id,
                @Part("content") String content,
                @Part("attachment") TypedFile photoFile,
                Callback<Post> callback);

对于TypedFile,您可以通过这种方式传递附件,

File attachmentFile = new File("upload/image.png");
TypedFile attachmentTypedFile = new TypedFile("image/*", photoFile);

答案 1 :(得分:1)

我可以通过以下链接here解决此问题。

我不知道这一点,但为了发送> qr.solve(a,b) [1] 85.2896286 -0.8924785 3.0482766 ,您需要设置JSON,如此:

REST API Service

希望这有助于其他人走出困境。