Android SDK使用HttpClient的问题,为啥老是报错,困扰了我好几天,求大神解救!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android SDK使用HttpClient的问题,为啥老是报错,困扰了我好几天,求大神解救!相关的知识,希望对你有一定的参考价值。

以下是我测试HttpGet的代码,使用Android SDK内置的HttpClient包,没有导入第三方的包。编写的时候没有报错,但是跑起来就会出现NoClassDefFoundError的错误,为什么会找不到类?这个问题怎么解救?

以下是报错的截图
问题我已经解决啦,Android4.0以上的版本不允许在主线程里操作UI,要另起一个线程操作网络访问,最后谢谢各位!

参考技术A 骚年,忘了在Manifast里面配置这个Activity了吧

开玩笑吧,不能在主线程操作UI。 UI线程一般就是主线程,不再UI线程操作UI在哪操作?!!
另开一个线程操作网络访是为了防止阻塞UI线程,网络操作结果要反映到UI线程中还是要操作UI线程,不过不能直接操作,要通过handler机制
参考技术B jar包导入错了追问

我没有导入第三方的包啊,都是用SDK内置的httpclient包的

参考技术C android SDK 的版本,和实际运行的版本不符追问

不太懂,该怎样解决呢

ndroid开发-httpclient兼容性问题

  据说android 6.0之后已经将Apache Http Client移出SDK,build时出现“Unable to find optional library: org.apache.http.legacy”,建议使用HttpURLConnetction代替,如果非要用httpclient,网上的方法是在build.gradle中加入:

android {  
    useLibrary ‘org.apache.http.legacy‘  
}

  但仍然有错,还有进一步介绍要看platforms\android-23\optional目录下有没有org.apache.http.legacy.jar 和 optional.json。如果没有optional.json,则自己新建一个这样的文件,然后加入如下内容:

[  
  {  
    "name": "org.apache.http.legacy",  
    "jar": "org.apache.http.legacy.jar",  
    "manifest": false  
  }  
] 

  仍然没有。最后通过修改build参数编译通过:

android {
    compileSdkVersion 25
    buildToolsVersion ‘26.0.1‘
    defaultConfig {
        applicationId "com.myname.cartools"
        minSdkVersion 19
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘
        }
    }
    productFlavors {
    }

 

以上是关于Android SDK使用HttpClient的问题,为啥老是报错,困扰了我好几天,求大神解救!的主要内容,如果未能解决你的问题,请参考以下文章

Gradle 构建问题:在最新的 Android SDK23 上升级 Quickblox 和 httpclient

Android 项目使用 httpclient --> http.client (apache), post/get 方法

Android SDK使用HttpClient的问题,为啥老是报错,困扰了我好几天,求大神解救!

Android SDK ~ Cloud Vision:警告:org.apache.httpcomponents:httpclient:4.0.1

Android 6.0 使用 Apache HttpClient

Apache HttpClient 弃用(Android 9.0)