HTTP のマルチパート/フォームデータ エンコーディングはファイルのアップロードによく使用され、クライアントはテキストとフォームの両方を送信できます。バイナリ データを 1 回のリクエストで受け取ります。 Apache Commons HttpClient 3.x ではこの機能がサポートされていましたが、バージョン 4.0 では削除されました。この記事では、マルチパート/フォームデータ POST リクエストを可能にする代替 Java ライブラリについて説明します。
HttpClient プロジェクトに協力しているにもかかわらず、マルチパート サポートを再実装する取り組みは知られていません。そのため、開発者はマルチパート/フォームデータのニーズに対応する代替ソリューションを探す必要があります。
ソリューション
現在の安定バージョンである HttpClient 4.x は、より最新のソリューションを提供します。マルチパートリクエストを処理するための API。更新された API を使用した例を次に示します。
CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost uploadFile = new HttpPost("..."); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.addTextBody("field1", "yes", ContentType.TEXT_PLAIN); 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 を使用している開発者 (非推奨) の場合、次のコード スニペットは非推奨の API を使用しています。
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();
その他の Java ライブラリマルチパート/フォームデータ POST リクエストのサポートには以下が含まれます:
以上がJava でマルチパート/フォームデータの POST リクエストを行う方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。