私はApache HttpComponents v4.3.6(maven httpclientとhttpmime)を使用しています。私はマルチパートとしてファイルデータをアップロードする必要があります。動作するFiddlerコマンドは、次のようになります。フィドラーにマルチパートデータのJava httpポスト
Content-Type: multipart/form-data; boundary=c2d7073062e24d86ad739647574e14b9
Accept: application/json
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:22.0) Gecko/20100101 Firefox/22.0
リクエストボディ:フィドラーに
要求ヘッダー
--c2d7073062e24d86ad739647574e14b9
Content-Disposition: form-data; name="categoryFile"; filename="self-classification-categories.tsv"
585743 583099 Existing Catrali 4Category ch Description of 4 Existing Category false false false Some notes 4 relating to Existing Category
--c2d7073062e24d86ad739647574e14b9--
ファイルの実際の内容は次のとおり
585743 583099 Existing Catrali 4Category ch Description of 4 Existing Category false false false Some notes 4 relating to Existing Category
今、私はApache Http Clientでこの投稿要求(上記)を実装しようとしましたが、実際にどのように行うのか分かりません。 Javaの(1.8)に上記の要求を変換するには、私が試した:(境界値:c2d7073062e24d86ad739647574e14b9)
httpclient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(createPostURI(host, path));
httpPost.setHeader("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:22.0) Gecko/20100101 Firefox/22.0");
httpPost.setHeader("Content-Type", "multipart/form-data; boundary=c2d7073062e24d86ad739647574e14b9");
httpPost.setHeader("Accept", "application/json");
String fileContent = "--c2d7073062e24d86ad739647574e14b9\r\nContent-Disposition: form-data; name=\"categoryFile\"; filename=\"self-classification-categories.tsv\""+
"\r\n\r\n"+
"585743 583099 Existing Catrali 4Category ch Description of 4 Existing Category false false false Some notes 4 relating to Existing Category"
+"\r\n--c2d7073062e24d86ad739647574e14b9--";
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.setBoundary("c2d7073062e24d86ad739647574e14b9");
builder.addTextBody("body", fileContent,ContentType.MULTIPART_FORM_DATA);
HttpEntity entity = builder.build();
httpPost.setEntity(entity);
response = httpclient.execute(httpPost, new GenericResponseHandler());
を私はJavaでリクエストボディを作り上げています方法が間違っていることを確信しています。したがって、予想されるformat.Iが表示されない場合、私が呼び出しているREST APIがこのエラーをスローするので、誤解を招くような403エラーが表示されます。
ありがとうございます。
サーバーがアクセスを拒否すると、403が表示されます。あなたのコードは私にはうまく見えます。また、あなたはファイルから本文の内容を読んでそれを使ってみることができますか? –