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
}

更多相关文章

  1. 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案
  2. javascript(六)js事件绑定浏览器兼容解决方案 attachEvent addEve
  3. java中多线程安全问题产生&解决方案——同步方法

随机推荐

  1. 在java中调用python方法
  2. Python知识点整理(基础篇)
  3. python 之 logger日志 字典配置文件
  4. python import的一些问题
  5. Python使用pandas对数据进行差分运算
  6. Python pyexcelerate库将多个工作表写入
  7. python 中 unicode原样转成str, unicode-
  8. python2和python3的区别
  9. 对numpy数组的每n个元素求平均值
  10. 从bash脚本传递参数到python解释器