[英]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.