0
我有一些现有的Java代码上传文件(如字节数组)到Box.net,最近我认为这将是很好的代码升级到Apache的HttpClient 4.4。然而,这已被证明比预期的要困难一点。这是我工作的遗留代码:使用MultipartEntityBuilder上传文件
HttpPost postMethod = new HttpPost(url);
MultipartEntity multipartEntity = new MultipartEntity();
for (NameValuePair parameter : parameters) {
String parameterName = parameter.getName();
String parameterValue = parameter.getValue();
StringBody valueBody = new StringBody(parameterValue, ContentType.MULTIPART_FORM_DATA);
multipartEntity.addPart(parameterName, valueBody);
}
Iterator iterator = byteArrayHashMap.keySet().iterator();
while (iterator.hasNext()) {
String key = (String) iterator.next();
byte[] byteArray = byteArrayHashMap.get(key);
multipartEntity.addPart(key, new ByteArrayBody(byteArray, key));
}
postMethod.setEntity(multipartEntity);
,这里是新的代码:
HttpPost postMethod = new HttpPost(url);
MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();
for (NameValuePair parameter : parameters) {
String parameterName = parameter.getName();
String parameterValue = parameter.getValue();
StringBody valueBody = new StringBody(parameterValue, ContentType.MULTIPART_FORM_DATA);
multipartEntityBuilder.addPart(parameterName, valueBody);
}
Iterator iterator = byteArrayHashMap.keySet().iterator();
while (iterator.hasNext()) {
String key = (String) iterator.next();
byte[] byteArray = byteArrayHashMap.get(key);
multipartEntityBuilder.addBinaryBody(key, byteArray);
}
postMethod.setEntity(multipartEntityBuilder.build());
当我运行新代码,服务器缺少参数的抱怨。我是否正确地使用MultipartEntityBuilder?
如果有人遇到这个问题,我可以通过更新addBinaryBody调用来设置ContentType来解决此问题,如下所示:multipartEntityBuilder.addBinaryBody(key,byteArray,ContentType.DEFAULT_BINARY,key); – user304582