0
ファイルを(バイト配列として)Box.netにアップロードするための既存のJavaコードがあります。最近、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