首頁 > Java > java教程 > 如何在 Java 中發出多部分/表單資料 POST 請求?

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

Susan Sarandon
發布: 2024-12-09 14:35:19
原創
305 人瀏覽過

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

用Java 發出Multipart/Form-Data POST 請求

HTTP 的multipart/form-data 編碼通常用於文件上傳,允許客戶端發送文字和單一請求中的二進位資料。雖然 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 請求包括:

  • Apache HTTP元件HttpComponents-Client:一個現代的、線程安全的HTTP 用戶端庫
  • Jersey Client API:一個高級、易於使用的RESTful Web 服務客戶端庫
  • Grizzly REST Framework:一個框架用於建置RESTful Web 服務

以上是如何在 Java 中發出多部分/表單資料 POST 請求?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板