今天在测试android api 28上的兼容问题时,出现2个的异常:
Didn't find class "org.apache.http.entity.StringEntity" on path
在过去的 Android 6 中,取消了对 Apache HTTP 客户端的支持, 而从 Android 9 开始官方又过分了,默认情况下该内容库已从 bootclasspath 中移除且不可用于应用,原因未知,望告知。
所以 Android 6.0 以上时,如果想使用org.apache.http的话,可以在gradle中android配置下写入:
useLibrary 'org.apache.http.legacy'
在Android 9以上时,如果还要继续使用org.apache.http的话,可以在AndroidManifest.xml中application节点下面写入:
<uses-library
android:name="org.apache.http.legacy"
android:required="false" />
而第二个异常:
onFailurejava.io.IOException: Cleartext traffic not permitted
其原因是在Android 9以上系统中,默认情况下启用网络传输层安全协议 (TLS),是不支持HTTP明文请求的,也就是支持HTTPS了。
所以解决方法是:
1.改成https请求
2.修改targetSdkVersion为28以下
3.向别人学习更全面的解决方案