如何在Android中的一个HTTP POST请求中一起发送嵌套的json数据和图像?

时间:2015-09-08 17:34:30

标签: java android json http

我目前正在使用org.apache.http.entity.mime.MultipartEntityBuilder。以下不起作用:

.addPart("key", new StringBody(jsonObject.toString()))

.addTextBody("key", jsonObject.toString())

.addTextBody("key", jsonObject.toString(), ContentType.APPLICATION_JSON)

此处jsonObjectorg.json.JSONObject

非嵌套字段和图像字段正确验证,但嵌套字段似乎没有填写(服务器返回“此字段是必需的。”)。

欢迎不使用MultipartEntityBuilder的解决方案。

2 个答案:

答案 0 :(得分:0)

我对Apache的MultipartEntityBuilder

了解一切。

但您总是可以将图像作为json对象中的Base64字段发送。在服务器中,您需要将其映射到byte[]字段。

答案 1 :(得分:0)

多部分数据与嵌套的json不兼容。我决定扁平化服务器API中的嵌套字段。然后,仍然使用MultipartEntityBuilder

构建请求
HttpEntity entity = MultipartEntityBuilder.create()
.addTextBody("inner_key1", jsonObject.get("inner_key1").toString())
.addTextBody("inner_key2", jsonObject.get("inner_key2").toString())
.addTextBody("inner_key3", jsonObject.get("inner_key3").toString())
.addBinaryBody("image", new File(imagePath))
.build();