使用 JSON 的 REST-HTTP 多部分发布

我需要接收一个 HTTP Post Multipart,它只包含两个参数:

  • JSON 字符串
  • 二进制文件

放置尸体的正确方法是什么? 我将使用 Chrome REST 控制台测试 HTTP 调用,因此我想知道是否正确的解决方案是为 JSON 参数和二进制文件设置一个“ label”键。

在服务器端,我使用 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 多部分请求中是否有其他方法接收这两个内容?

先谢谢你

207220 次浏览

If I understand you correctly, you want to compose a multipart request manually from an HTTP/REST console. The multipart format is simple; a brief introduction can be found in the HTML 4.01 spec. You need to come up with a boundary, which is a string not found in the content, let’s say HereGoes. You set request header Content-Type: multipart/form-data; boundary=HereGoes. Then this should be a valid request body:

--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--