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。
以上がHttpClient を使用して Java でマルチパート/フォームデータ POST リクエストを行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。