在 Apache Commons HttpClient 版本 3.x 时代,可以进行 multipart/form-data POST 请求(2004年的例子)。不幸的是,这在以下情况下不再可能HttpClient 4.0 版本.
对于我们的核心活动“HTTP”,多部分有点
超出范围。我们很乐意使用由某些人维护的多部分代码
其他项目也在其范围内,但我不知道有任何项目。
几年来我们尝试将多部分代码移至 commons-codec
以前,但我没有在那里起飞。奥列格最近提到了另一个
具有多部分解析代码并且可能感兴趣的项目
在我们的多部分格式化代码中。我不知道目前的状态
关于这一点。 (http://www.nabble.com/multipart-form-data-in-4.0-td14224819.html)
有人知道任何 Java 库允许我编写可以发出多部分/表单数据 POST 请求的 HTTP 客户端吗?
背景:我想使用Zoho Writer 的远程 API.
我们使用 HttpClient 4.x 来进行多部分文件发布。
UPDATE: As of 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 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();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)