org.apache.http.legacy在API 28上不起作用

时间:2018-11-26 13:35:59

标签: android apache http

首先,我使用org.apache.http函数已有一段时间,当我尝试在API 28上启动我的应用程序时出错了。它在API 26和API 23上都有效,但是突然之间API出了点问题28. Google进行了一些更改吗?

5 个答案:

答案 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

执行完该操作后,错误消失了,我的应用程序又重新运行了。