首先,我使用org.apache.http函数有一段时间了,当我试图在API 28上启动我的应用程序时出错了。它在API 26和API 23上工作,但API 28突然出现问题。谷歌做了一些改变吗?
要在Android 9.0 Pie中完美运行org.apache.http.legacy,请创建一个xml文件res/xml/network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>
并在你的AndroidManifest.xml 中添加2个标签标签
android:networkSecurityConfig="@xml/network_security_config"android:name="org.apache.http.elegacy">
<?xml version="1.0" encoding="utf-8"?>
<manifest......>
<application android:networkSecurityConfig="@xml/network_security_config">
<activity..../>
......
......
<uses-library
android:name="org.apache.http.legacy"
android:required="false"/>
</application>
此外,在应用程序构建渐变中添加useLibrary 'org.apache.http.legacy'
android {
compileSdkVersion 28
defaultConfig {
applicationId "your application id"
minSdkVersion 15
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
useLibrary 'org.apache.http.legacy'
}
步骤1:
在res/xml/network_security_config.xml
中创建一个xml文件,并在其中复制以下代码
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">your.website.domain</domain> <!-- the domain you are using for api network call -->
</domain-config>
</network-security-config>
步骤2:
现在在您的Manifest.xml
中,在<application>
标记下添加android:networkSecurityConfig="@xml/network_security_config"
。完成!
您只需要做两件事:
1-将你的AndroidManifest.xml放在<application>
下的下一行
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
2-将正在调用的Url更改为HTTPS,而不是HTTP
在我这样做之后,错误消失了,我的应用程序又工作了。
Apache HTTP客户端弃用
使用Android 6.0,我们删除了对Apache HTTP客户端的支持。从Android 9开始,该库从bootclasspath,默认情况下应用程序不可用。
我也遇到了同样的问题。我使用HTTPS而不是HTTP解决了这个问题。显然,现在需要一个安全的连接。