Android SDK使用HttpClient的问题,为啥老是报错,困扰了我好几天,求大神解救!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android SDK使用HttpClient的问题,为啥老是报错,困扰了我好几天,求大神解救!相关的知识,希望对你有一定的参考价值。
以下是我测试HttpGet的代码,使用Android SDK内置的HttpClient包,没有导入第三方的包。编写的时候没有报错,但是跑起来就会出现NoClassDefFoundError的错误,为什么会找不到类?这个问题怎么解救?
以下是报错的截图
问题我已经解决啦,Android4.0以上的版本不允许在主线程里操作UI,要另起一个线程操作网络访问,最后谢谢各位!
开玩笑吧,不能在主线程操作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