2つのパラメーターのみを含むHTTP Post Multipartを受け取る必要があります。
体を設定する正しい方法はどれですか? 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文字列を取得するのは正しいですか? 1つのHTTPマルチパートリクエストでこれら2つのコンテンツを受信する他の方法はありますか?
前もって感謝します
私があなたを正しく理解していれば、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--