我想上传图片并将数据发送到服务器。我正在使用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)
如何解决这个问题?
答案 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.jar
和httpmime-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);