使用 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中文网其他相关文章!