![](/img/trans.png)
[英]Not able to recreate a cURL POST request using okHTTP multipart-form data in Java for my android app
[英]How can I send a POJO object in a Multipart-form Request using Retrofit?
我正在尝试使用Retrofit
在Multipart-form
请求中发送以下内容:
{ "attachment": {
"file_cache": "....."
"original": "upload/image.png",
"versions": {
"small": "uploads/small_image.png"
}
},
"content": "",
"id": 1
}
我不知道这是我应该发送给API的正确请求,因为它们的文档确实很糟糕,但是我能够使用Chrome Dev Tools研究API明智地接收了什么以及它如何响应,它似乎接受JSON。
这是我观察到的照片:
他们的文档仅声明"attachment"
应为对象。
是否可以通过multipart-form
请求发送POJO
对象? 我的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, ...);
关于如何做到这一点的任何想法?
如果尝试使用Retrofit
发送POJO
对象,则会得到状态422
无法处理的实体。
您尝试过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);
我不知道这一点,但是要发送JSON
您需要像这样设置REST API Service
:
@Multipart
@POST("/v2/{type}/{id}/message.json")
void addMessage(@Path("type") String type,
@Path("id") int id,
@Part("content") String content,
@Part("attachment[file_cache]") String fileCache,
@Part("attachment[original]") String original,
@Part("attachment[versions][small]") String small,
Callback<Post> callback);
希望这可以帮助其他人。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.