为了账号安全,请及时绑定邮箱和手机立即绑定

我用的android studio,添加HttpClient的依赖包之后没有报错,但是编译不通过

首先声明,我使用的是android studio ,SDK用的是最近的23版本。

1、因为4.0之后已经没有了HttpClient,我添加了compile 'org.apache.httpcomponents:httpclient-android:4.3.5.1'依赖,但是还是找不到HttpClient的包!!这一步有错么?

2、然后我又百度加上自己不断换包五六次尝试,添加如下依赖compile 'org.apache.httpcomponents:httpclient-osgi:4.5.1'这个包,能够使用HttpClient了。但是令人崩溃的是居然HttpResponse又用不了,不知道是哪个包的问题。于是又百度加上换各种包尝试了四五次,发现添加compile 'org.apache.httpcomponents:httpcore:4.4.4'这个依赖之后,HttpRespone惊喜的可以用了。这个包导得有没有问题?

3、于是噼里啪啦打完代码,一运行,结果编译不过去,提示如下:

Warning:Dependency org.apache.httpcomponents:httpclient:4.5.1 is ignored for debug as it may be conflicting with the internal version provided by Android.
         In case of problem, please repackage it with jarjar to change the class packages
Warning:Dependency org.apache.httpcomponents:httpclient:4.5.1 is ignored for debug as it may be conflicting with the internal version provided by Android.
         In case of problem, please repackage it with jarjar to change the class packages
Warning:Dependency org.apache.httpcomponents:httpclient:4.5.1 is ignored for debug as it may be conflicting with the internal version provided by Android.
         In case of problem, please repackage it with jarjar to change the class packages
Warning:Dependency commons-logging:commons-logging:1.2 is ignored for debug as it may be conflicting with the internal version provided by Android.
         In case of problem, please repackage it with jarjar to change the class packages
Warning:Dependency org.apache.httpcomponents:httpclient:4.5.1 is ignored for debug as it may be conflicting with the internal version provided by Android.
         In case of problem, please repackage it with jarjar to change the class packages
Warning:Dependency commons-logging:commons-logging:1.2 is ignored for debug as it may be conflicting with the internal version provided by Android.
         In case of problem, please repackage it with jarjar to change the class packages
Warning:Dependency org.apache.httpcomponents:httpclient:4.5.1 is ignored for release as it may be conflicting with the internal version provided by Android.
         In case of problem, please repackage it with jarjar to change the class packages
Warning:Dependency org.apache.httpcomponents:httpclient:4.5.1 is ignored for release as it may be conflicting with the internal version provided by Android.
         In case of problem, please repackage it with jarjar to change the class packages
Warning:Dependency org.apache.httpcomponents:httpclient:4.5.1 is ignored for release as it may be conflicting with the internal version provided by Android.
         In case of problem, please repackage it with jarjar to change the class packages
Warning:Dependency commons-logging:commons-logging:1.2 is ignored for release as it may be conflicting with the internal version provided by Android.
         In case of problem, please repackage it with jarjar to change the class packages
Warning:Dependency org.apache.httpcomponents:httpclient:4.5.1 is ignored for release as it may be conflicting with the internal version provided by Android.
         In case of problem, please repackage it with jarjar to change the class packages
Warning:Dependency commons-logging:commons-logging:1.2 is ignored for release as it may be conflicting with the internal version provided by Android.
         In case of problem, please repackage it with jarjar to change the class packages

Error:Error converting bytecode to dex:

Cause: com.android.dex.DexException: Multiple dex files define Lorg/apache/commons/codec/Decoder;

Error:Execution failed for task ':app:transformClassesWithDexForDebug'.

> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'D:\Program Files\Java\jdk1.8\bin\java.exe'' finished with non-zero exit value 2

然后我彻底崩溃了!

我也知道这个错误的意思是这个包与androidSDK的内部版本冲突,但是你的内部版本不能用啊,我把compile 'org.apache.httpcomponents:httpclient-osgi:4.5.1'依赖删除之后立马报错,各种找不到类找不到方法。

我无数次实验,只有

compile 'org.apache.httpcomponents:httpclient-android:4.3.5.1'
compile 'org.apache.httpcomponents:httpcore:4.4.4'

compile 'org.apache.httpcomponents:httpclient-osgi:4.5.1'三个依赖全导才不报错

下图里面所有的apache的httpClient的依赖我通通导了个遍,并且所有排列组合都尝试过,两两搭配三三搭配,单独一个包。最后无解!http://img1.sycdn.imooc.com//5675b1ea0001f75405870334.jpg

我自认为我真是拼了老命想靠自己来解决问题,但是喷了屏幕一口血,也没办法!希望大神帮帮我!


正在回答

8 回答

为什么没有人告诉你httpclient已经不支持了。sdk23直接就删了,6.0。

httpurlconnection   okhttp  看着两个吧。

看到最后一行 已然明白应该是花了不少心思的。哥们加油吧。



1 回复 有任何疑惑可以回复我~
#1

指与点 提问者

非常感谢!正在研究volley!
2015-12-20 回复 有任何疑惑可以回复我~
#2

指与点 提问者

主要是看到麦子学院、慕课的课程HttpClient还占有相当大的比重
2015-12-20 回复 有任何疑惑可以回复我~

在app路径下的build.gradle中,在dependencies {compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
} 中添加添加这个试下,我的就解决了http://img1.sycdn.imooc.com//5774ea520001a0d108800175.jpg

1 回复 有任何疑惑可以回复我~

建议大家以后都是有OKHttp吧,HttpClient已经不适合了,用了会出很多的问题,而且没什么解决方法,楼上说的加useLibrary 'org.apache.http.legacy'这个方法,我使用的4.5.2的版本,在Android Studio中还是报错,不能解决问题。

0 回复 有任何疑惑可以回复我~
#1

Simonzx

我的成功了
2016-06-01 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//56e9449f0001d43d05540283.jpg哈哈,那是因为你没试过这个包。这个包加上去本人亲测可以找到HttpClient

2 回复 有任何疑惑可以回复我~
#1

Simonzx

成功找到,不知道运行有无问题。
2016-06-01 回复 有任何疑惑可以回复我~
#2

apple44124383074

org.apache.http.client
2016-11-09 回复 有任何疑惑可以回复我~
#3

崔东玉

找到 但是我还没运行 不过已经很高兴了 谢谢你
2017-03-17 回复 有任何疑惑可以回复我~

我看android疯狂讲义中HttpClient的功能比URLConnection强大很多,只是到了手机上阉割和优化后URLConnection更加合适而已,建议HttpClient学好不会有坏处。

0 回复 有任何疑惑可以回复我~

看了你这贴终于搞定了,原来在build.gradle中的android {}加上useLibrary 'org.apache.http.legacy'即可,同时libs中不能够导HttpClient相关的jar包。 我之前就是这两步都做了,导致还是编译出错,现在兜回来终于解决了。

0 回复 有任何疑惑可以回复我~

过时的api知道过时就行了,编程思路任何时候都不过时。

自己研究android这些东西,确实是有很多坑要填的,都一样。

0 回复 有任何疑惑可以回复我~

我最后还是百度到了!解决方法很简单,就是在android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
}
后面加上 useLibrary 'org.apache.http.legacy',就没问题了。
我之前添加HttpClient的依赖不仅没有用,而且还会导致编译时和系统的包冲突。就加一句话,不加什么其他的依赖。之前添加了其他依赖或者jar包导致错误的,最好新建一个工程,不然还是会编译失败。

3 回复 有任何疑惑可以回复我~
#1

蒋海浪

我用的4.5.2的版本,这个方法现在好像也失效了
2016-03-29 回复 有任何疑惑可以回复我~
#2

慕粉3226447

哥们,能具体的说一下嘛, 添加的依赖, 都有什么
2016-09-08 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android中的Http通信
  • 参与学习       64671    人
  • 解答问题       306    个

了解Android-http网络编程应用,常见忘了请求相关应用

进入课程

我用的android studio,添加HttpClient的依赖包之后没有报错,但是编译不通过

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信