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 請求包括:
以上是如何在 Java 中發出多部分/表單資料 POST 請求?的詳細內容。更多資訊請關注PHP中文網其他相關文章!