org.apache.http.legacy doesn't work on API 28

2019-06-11 02:58发布

To begin with, I was using org.apache.http functions for a while now and error came when I tried to launch my app on API 28. It's working on API 26 and API 23, but suddenly something is wrong with API 28. Did Google made some changes?

4条回答
戒情不戒烟
2楼-- · 2019-06-11 03:30

Step 1:
create an xml file in res/xml/network_security_config.xml and copy the below code in it,

<?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>

Step 2:
now in your Manifest.xml add android:networkSecurityConfig="@xml/network_security_config" under the <application> tag. Done!

查看更多
爷的心禁止访问
3楼-- · 2019-06-11 03:37

To run org.apache.http.legacy perfectely in Android 9.0 Pie create an xml file 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>

And add 2 tags tag in your AndroidManifest.xml

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>

Also add useLibrary 'org.apache.http.legacy' in your app build gradle

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'
}
查看更多
爷、活的狠高调
4楼-- · 2019-06-11 03:41

I had the same problem. I resolved it by using HTTPS, instead of HTTP. Apparently, a secure connection is now required.

查看更多
在下西门庆
5楼-- · 2019-06-11 03:45

Apache HTTP client deprecation

With Android 6.0, we removed support for the Apache HTTP client. Beginning with Android 9, that library is removed from the bootclasspath and is not available to apps by default.

查看更多
登录 后发表回答