Java 在Android中,如何在一个HTTP POST请求中同时发送嵌套的json数据和图像?
我目前正在使用Java 在Android中,如何在一个HTTP POST请求中同时发送嵌套的json数据和图像?,java,android,json,http,Java,Android,Json,Http,我目前正在使用org.apache.http.entity.mime.MultipartEntityBuilder。以下各项不起作用: .addPart(“键”,新的StringBody(jsonObject.toString()) .addTextBody(“key”,jsonObject.toString()) .addTextBody(“key”,jsonObject.toString(),ContentType.APPLICATION\u JSON) 这里,jsonObject是一个or
org.apache.http.entity.mime.MultipartEntityBuilder
。以下各项不起作用:
.addPart(“键”,新的StringBody(jsonObject.toString())
.addTextBody(“key”,jsonObject.toString())
.addTextBody(“key”,jsonObject.toString(),ContentType.APPLICATION\u JSON)
这里,jsonObject
是一个org.json.jsonObject
非嵌套字段和图像字段验证正确,但嵌套字段似乎没有填写(服务器返回“thisfield is required”)
不使用
MultipartEntityBuilder
的解决方案也受欢迎。我对Apache的MultipartEntityBuilder
一无所知
但您可以始终将图像作为json对象中的字段发送。在服务器中,您需要将其映射到
字节[]
字段。多部分数据与嵌套的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();
这是一个很好的建议,但我正试图避免它,因为开销、潜在的内存不足错误以及服务器端的额外工作。