我需要收到一个HTTP Post Multipart,其中只包含2个参数:
设置身体的正确方法是什么? 我将使用Chrome REST控制台测试HTTP调用,所以我想知道正确的解决方案是为JSON参数和二进制文件设置“标签”键。
在服务器端,我正在使用Resteasy 2.x,我将按照以下方式阅读Multipart主体:
@POST
@Consumes("multipart/form-data")
public String postWithPhoto(MultipartFormDataInput multiPart) {
Map <String, List<InputPart>> params = multiPart.getFormDataMap();
String myJson = params.get("myJsonName").get(0).getBodyAsString();
InputPart imagePart = params.get("photo").get(0);
//do whatever I need to do with my json and my photo
}
这是要走的路吗? 使用标识特定内容处置的键“myJsonName”检索我的JSON字符串是否正确? 有没有其他方法可以在一个HTTP多部分请求中接收这两个内容?
提前致谢
答案 0 :(得分:136)
如果我理解正确,您希望从HTTP / REST控制台手动编写多部分请求。多部分格式很简单;可以找到简要介绍in the HTML 4.01 spec。你需要提出一个边界,这是一个在内容中找不到的字符串,比方说HereGoes
。您设置了请求标头Content-Type: multipart/form-data; boundary=HereGoes
。那么这应该是一个有效的请求体:
--HereGoes
Content-Disposition: form-data; name="myJsonString"
Content-Type: application/json
{"foo": "bar"}
--HereGoes
Content-Disposition: form-data; name="photo"
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
<...JPEG content in base64...>
--HereGoes--