上传文件时MultipartEntityBuilder中的NoClassDefFoundError

时间:2014-08-12 07:31:37

标签: android android-studio noclassdeffounderror contenttype

我想上传图片并将数据发送到服务器。我正在使用MultipartEntityBuilder。我在Android Studio上编码。

这是我的代码

HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(config.api_url+"profile.php");

MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);

if(mLastTakenImageAsJPEGFile!=null) {
    builder.addBinaryBody("image", mLastTakenImageAsJPEGFile);
}

builder.addTextBody("token", _appPrefs.getToken());
final HttpEntity reqEntity = builder.build();

httpPost.setEntity(reqEntity);

我收到运行时错误

java.lang.NoClassDefFoundError: org.apache.http.entity.ContentType 
at 
org.apache.http.entity.mime.MultipartEntityBuilder.addBinaryBody(MultipartEntityBuilder.java:146)

如何解决这个问题?

2 个答案:

答案 0 :(得分:5)

我在httpmime 4.3.6中发现了这个问题,我还没找到解决办法,我建议您使用httpmime 4.2.1,它运行正常。

MultipartEntity multipartEntity = new MultipartEntity();
ContentBody contentBody = new FileBody(file);
multipartEntity.addPart("image", new FileBody(file));
httpPost.setEntity(multipartEntity);

答案 1 :(得分:0)

我有同样的问题,

您需要添加httpcore-4.2.3.jarhttpmime-4.3.2.jar,如果您使用的是IOutils,请使用ByteStreams guava-18.jar,不要忘记互联网权限添加。 jar到你的\ projectName \ app \ libs文件夹并同步。

使用此:

byte[] data;
data = ByteStreams.toByteArray(inputStream); 

而不是:

byte[] data;
data = IOUtils.toByteArray(inputStream);