我尝试在 Android 中使用 MultiPartEntity 和 HttpClient 发送图像,但不断收到异常:java.lang.UnsupportedOperationException:多部分表单实体未实现 #getContent()
这是我的代码:
public boolean enrollImage(String id, byte[] image) {
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("https://example.com/"+id+"/images/");
httpPost.addHeader("Authorization", "Basic " + Base64.encodeToString(("user"+":"+"password").getBytes(),Base64.NO_WRAP));
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
entity.addPart("image", new ByteArrayBody(image, "image/jpg", "image.jpg"));
httpPost.setEntity(entity);
HttpResponse response;
try {
response = httpClient.execute(httpPost);
HttpEntity responseEntity = response.getEntity();
String responseString = EntityUtils.toString(entity);
JSONObject json = new JSONObject(responseString);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return true;
}
我添加了较新的 Apache 库 httpmime-4.2.5.jar
、httpclient-4.2.5.jar
、httpcore-4.2.4。 jar
和 apache-mime4j-core-0.7.2.jar
到我的项目。
我怎样才能让它运行,以便我可以发布
最佳答案
事实证明,我只是将我发送的请求实体与我想要解析为 json 的响应实体混淆了。该代码的第 12 行应该是
String responseString = EntityUtils.toString(responseEntity);
不是
String responseString = EntityUtils.toString(entity);
问题已解决。猜猜我是时候买个rubber duck了
关于android - 无法在 Android 应用程序中 POST MultiPartEntity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16742844/