」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何使用 HttpClient 在 Java 中發出多部分/表單資料 POST 請求?

如何使用 HttpClient 在 Java 中發出多部分/表單資料 POST 請求?

發佈於2024-12-23
瀏覽:541

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 請求功能。 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