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