「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > HttpClient を使用して Java でマルチパート/フォームデータ POST リクエストを行う方法

HttpClient を使用して Java でマルチパート/フォームデータ POST リクエストを行う方法

2024 年 12 月 23 日に公開
ブラウズ:201

How to Make Multipart/Form-Data POST Requests in Java Using HttpClient?

Java を使用したマルチパート フォーム データの POST リクエストの作成

Apache Commons HttpClient バージョン 4.0 の出現により、マルチパート/フォーム データの POST リクエストを実行する機能がなくなりました。バージョン 3.x では可能でした。 HttpClient チームは、マルチパート機能は中心的な活動の範囲外であると説明し、代替ライブラリを探すことを推奨しました。

適切な Java ライブラリの検索

問題は、どれであるかということです。 Java ライブラリは、マルチパート/フォームデータ POST リクエスト機能を提供します。そのようなライブラリの 1 つが HttpClient 4.x で、これらのリクエストを行うための包括的なソリューションを提供します。

更新された HttpClient 4.3 コード

HttpClient バージョン 4.3 以降では、APIが更新され、一部のクラスが廃止されました。次のコード スニペットは、マルチパート ファイルのポストを作成するための改訂されたメソッドを示しています。

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost uploadFile = new HttpPost("...");
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addTextBody("field1", "yes", ContentType.TEXT_PLAIN);

// This attaches the file to the POST:
File f = new File("[/path/to/upload]");
builder.addBinaryBody(
    "file",
    new FileInputStream(f),
    ContentType.APPLICATION_OCTET_STREAM,
    f.getName()
);

HttpEntity multipart = builder.build();
uploadFile.setEntity(multipart);
CloseableHttpResponse response = httpClient.execute(uploadFile);
HttpEntity responseEntity = response.getEntity();

非推奨の HttpClient 4.0 コード (参考用)

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);

FileBody bin = new FileBody(new File(fileName));
StringBody comment = new StringBody("Filename: "   fileName);

MultipartEntity reqEntity = new MultipartEntity();
reqEntity.addPart("bin", bin);
reqEntity.addPart("comment", comment);
httppost.setEntity(reqEntity);

HttpResponse response = httpclient.execute(httppost);
HttpEntity resEntity = response.getEntity();

これらのライブラリを使用すると、開発者はマルチパート/フォームデータ POST リクエストを実行できる HTTP クライアントをシームレスに作成でき、このタイプのリクエストを必要とする Web サービスや API と対話できるようになります。リクエスト形式。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3