android - 无法在 Android 应用程序中 POST MultiPartEntity

标签 android apache post httpclient multipartform-data

我尝试在 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.jarhttpclient-4.2.5.jarhttpcore-4.2.4。 jarapache-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/

相关文章:

linux - 使用 NGINX 反向代理下载约 80kb 后挂起/失败

http - 如何处理 "100 continue"HTTP 消息?

javascript - Ajax 和 VbScript : fetching Post variable in test. asp

java - 访问 SMS 消息类型常量

apache - 重置 Mac/Apache Web 服务器文件夹权限?

java - "findLibrary returned null"在 Android 上连接到 deezer 的播放器模块时

javascript - addEventListener ("load",...) 导致过多的 XmlHttpRequest?

c# - 页面重新加载是否会导致发布?

android - 如何向 ListActivity 添加复选框而不丢失 onListItemClick 功能?

android - 如何通过默认的 Android 下载器下载文件?