POST json和图像到服务器android
16lz
2021-01-22
I tried to post JSON and image file to server using android.
我试图使用android将JSON和图像文件发布到服务器。
class TaskUploadPic extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... strings) {
try {
MultipartEntityBuilder multipartEntity = MultipartEntityBuilder.create();
multipartEntity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
multipartEntity.addTextBody("json", strings[0]);
multipartEntity.addPart("image", new FileBody(file));
HttpClient httpclient = new DefaultHttpClient();
httpclient.getConnectionManager().closeExpiredConnections();
HttpPost httppost = new HttpPost(serverURL);
httppost.setEntity(multipartEntity.build());
HttpResponse response = httpclient.execute(httppost);
return EntityUtils.toString(response.getEntity());
} catch (IOException ex) {
Log.wtf("upload", ex.getMessage());
}
return "null";
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
text.setText(result);
}
}
It seems that all is ok, but after executing that AsyncTask, I got error:
似乎一切正常,但在执行AsyncTask之后,我收到了错误:
E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #2
Process: ru.kit.automart, PID: 30631
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:304)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/entity/ContentType;
at org.apache.http.entity.mime.MultipartEntityBuilder.addTextBody(MultipartEntityBuilder.java:158)
at ru.kit.automart.UploadPicActivity$TaskUploadPic.doInBackground(UploadPicActivity.java:189)
at ru.kit.automart.UploadPicActivity$TaskUploadPic.doInBackground(UploadPicActivity.java:181)
at android.os.AsyncTask$2.call(AsyncTask.java:292)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.http.entity.ContentType" on path: DexPathList[[dex file "/data/data/ru.kit.automart/files/instant-run/dex/slice-support-annotations-24.1.1_7604d2381e39dd02ef461f537f961dbb4e9625b6-classes.dex", dex file "/data/data/ru.kit.automart/files/instant-run/dex/slice-slice_9-classes.dex", dex file "/data/data/ru.kit.automart/files/instant-run/dex/slice-slice_8-classes.dex", dex file "/data/data/ru.kit.automart/files/instant-run/dex/slice-slice_7-classes.dex", dex file "/data/data/ru.kit.automart/files/instant-run/dex/slice-slice_6-classes.dex", dex file "/data/data/ru.kit.automart/files/instant-run/dex/slice-slice_5-classes.dex", dex file "/data/data/ru.kit.automart/files/instant-run/dex/slice-slice_4-classes.dex", dex file "/data/data/ru.kit.automart/files/instant-run/dex/slice-slice_3-classes.dex", dex file "/data/data/ru.kit.automart/files/instant-run/dex/slice-slice_2-classes.dex", dex file "/data/data/ru.kit.automart/files/instant-run/dex/slice-slice_1-classes.dex", dex file "/data/data/ru.kit.automart/files/instant-run/dex/slice-slice_0-classes.dex", dex file "/data/data/ru.kit.automart/files/instant-run/dex/slice-internal_impl-24.1.1_6ad3c734c630b0da8f77be30b148d6bf343c3efb-classes.dex", dex file "/data/data/ru.kit.automart/files/instant-run/dex/slice-httpmime-4.5.2_bf26247ce9bf36f977d3bfba701b9635500c22f3-classes.dex", dex file "/data/data/ru.kit.automart/files/instant-run/dex/slice-com.github.pinball83-masked-edittext-1.0.3_0e8a6c65b0351a310754f26167cf476680872fd3-classes.dex", dex file "/data/data/ru.kit.automart/files/instant-run/dex/slice-com.android.support-support-vector-drawable-24.1.1_a5171778b8b856af5acc9b46463816a13d8e94bf-classes.dex", dex file "/data/data/ru.kit.automart/files/instant-run/dex/slice-com.android.support-support-v4-24.1.1_a349006ec815f9d626f1bdbf50fa1e0dd886c0dc-classes.dex", dex file "/data/data/ru.kit.automart/files/instant-run/dex/slice-com.android.support-recyclerview-v7-24.1.1_6efa576f7ec7ebc0253c8e8605405e1d336e7cc4-classes.dex", dex file "/data/data/ru.kit.automart/files/instant-run/dex/slice-com.android.support-design-24.1.1_5d630f1067696b166c4402c2202dd3ac771538b2-classes.dex", dex file "/data/data/ru.kit.automart/files/instant-run/dex/slice-com.android.support-appcompat-v7-24.1.1_30616bdd58d9fd5e43c2d1a2845438888bdccd13-classes.dex", dex file "/data/data/ru.kit.automart/files/instant-run/dex/slice-com.android.support-animated-vector-drawable-24.1.1_a57732f7c118f52713147bd5067abd84c1b5de5e-classes.dex"],nativeLibraryDirectories=[/data/app/ru.kit.automart-1/lib/arm64, /vendor/lib64, /system/lib64, /vendor/lib64, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at com.android.tools.fd.runtime.IncrementalClassLoader$DelegateClassLoader.findClass(IncrementalClassLoade
What I did wrong? I've read many topics on StackOverflow, but it didn't help me.
我做错了什么?我在StackOverflow上阅读了很多主题,但它对我没有帮助。
dependencies in gradle file:
gradle文件中的依赖项:
dependencies {
// ...
compile 'org.apache.httpcomponents:httpclient:4.5.2'
compile 'org.apache.httpcomponents:httpmime:4.5.2'
}
1 个解决方案
#1
0
org.apache.http.entity.ContentType
is available in httpcore
, so you need to include compile 'org.apache.httpcomponents:httpcore:4.4.5'
:
org.apache.http.entity.ContentType在httpcore中可用,因此您需要包含compile'org.apache.httpcomponents:httpcore:4.4.5':
dependencies {
// ...
compile 'org.apache.httpcomponents:httpclient:4.5.2'
compile 'org.apache.httpcomponents:httpmime:4.5.2'
compile 'org.apache.httpcomponents:httpcore:4.4.5' // Include this
}
更多相关文章
- 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案
- javascript(六)js事件绑定浏览器兼容解决方案 attachEvent addEve
- java中多线程安全问题产生&解决方案——同步方法