2016-12-14 56 views
0

我试图使用android发布JSON和图像文件到服务器。张贴json和图像到服务器android

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 

我做了什么错:

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); 
    } 
} 

这一切似乎是好的,但执行该的AsyncTask,我得到了错误后? 我已经阅读了很多关于StackOverflow的主题,但它没有帮助我。

依赖的gradle中的文件:

dependencies { 
// ... 
    compile 'org.apache.httpcomponents:httpclient:4.5.2' 
    compile 'org.apache.httpcomponents:httpmime:4.5.2' 
} 
+0

看起来它找不到一个Java类,这需要引起'通过:java.lang.ClassNotFoundException:没有找到类“org.apache.http.entity.ContentType”' – ryantxr

回答

0

org.apache.http.entity.ContentTypehttpcore,所以你需要包括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 
} 
+0

我已经试过这个。在项目构建过程中发生错误: 错误:任务':app:transformResourcesWithMergeJavaResForDebug'的执行失败。 > com.android.build.api.transform.TransformException:com.android.builder.packaging.DuplicateFileException:在APK中拷贝的重复文件META-INF/LICENSE \t File1:.gradle \ caches \ modules-2 \ files-2.1 \ org.apache.httpcomponents \ httpcore \ 4.4.5 \ ... \ httpcore-4.4.5.jar \t File2:.gradle \ caches \ modules-2 \ files-2.1 \ org.apache.httpcomponents \ httpmime \ 4.5 .2 \ ... \ httpmime-4.5.2.jar –

+0

您是否试图在'packagingOptions'中排除''META-INF/LICENSE''? (请参阅http://stackoverflow.com/a/34039265/3473158) – Nico

+0

我还添加了“META-INF/DEPENDENCIES”排除功能。谢谢! –