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

后端 未结 5 1009
执念已碎
执念已碎 2020-12-10 15: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

相关标签:
5条回答
  • 2020-12-10 16:14

    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'
    }
    
    0 讨论(0)
  • 2020-12-10 16:22

    You just need to do two things:

    1-Put in your AndroidManifest.xml the next line under <application>

    <uses-library android:name="org.apache.http.legacy" android:required="false"/>

    2-Change the Url being invoke to HTTPS instead of HTTP

    After I did that the error goes away and my app worked again.

    0 讨论(0)
  • 2020-12-10 16:35

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

    0 讨论(0)
  • 2020-12-10 16:36

    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.

    0 讨论(0)
  • 2020-12-10 16:39

    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!

    0 讨论(0)
提交回复
热议问题