首先,我使用org.apache.http函数已有一段时间,当我尝试在API 28上启动我的应用程序时出错了。它在API 26和API 23上都有效,但是突然之间API出了点问题28. Google进行了一些更改吗?
答案 0 :(得分:4)
步骤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
的{{1}}标签下添加android:networkSecurityConfig="@xml/network_security_config"
。完成!
答案 1 :(得分:1)
Apache HTTP client deprecation
在Android 6.0中,我们删除了对Apache HTTP客户端的支持。 从Android 9开始,该库已从 bootclasspath,默认情况下不适用于应用程序。
答案 2 :(得分:0)
要在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.legacy”
<?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'
}
答案 3 :(得分:0)
我有同样的问题。我通过使用HTTPS而不是HTTP来解决它。显然,现在需要安全连接。
答案 4 :(得分:0)
您只需要做两件事:
1-将AndroidManifest.xml放入<application>
下的下一行
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
2-将要调用的网址更改为HTTPS而不是HTTP
执行完该操作后,错误消失了,我的应用程序又重新运行了。