[java] REST-JSON을 사용한 HTTP 포스트 멀티 파트

2 개의 매개 변수 만 포함하는 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 멀티 파트 요청에서이 두 콘텐츠를 수신하는 다른 방법이 있습니까?

미리 감사드립니다



답변

올바르게 이해했다면 HTTP / REST 콘솔에서 수동으로 멀티 파트 요청을 작성하고 싶습니다. 멀티 파트 형식은 간단합니다. 간단한 소개는 HTML 4.01 사양에서 찾을 수 있습니다 . 콘텐츠에서 찾을 수없는 문자열 인 경계를 만들어야 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--


답변