今天在測(cè)試android api 28上的兼容問(wèn)題時(shí),出現(xiàn)2個(gè)的異常:
Didn't find class "org.apache.http.entity.StringEntity" on path
在過(guò)去的 Android 6 中,取消了對(duì) Apache HTTP 客戶(hù)端的支持, 而從 Android 9 開(kāi)始官方又過(guò)分了,默認(rèn)情況下該內(nèi)容庫(kù)已從 bootclasspath 中移除且不可用于應(yīng)用,原因未知简软,望告知蛮拔。
所以 Android 6.0 以上時(shí),如果想使用org.apache.http的話(huà)替饿,可以在gradle中android配置下寫(xiě)入:
useLibrary 'org.apache.http.legacy'
在Android 9以上時(shí)语泽,如果還要繼續(xù)使用org.apache.http的話(huà),可以在AndroidManifest.xml中application節(jié)點(diǎn)下面寫(xiě)入:
<uses-library
android:name="org.apache.http.legacy"
android:required="false" />
而第二個(gè)異常:
onFailurejava.io.IOException: Cleartext traffic not permitted
其原因是在Android 9以上系統(tǒng)中视卢,默認(rèn)情況下啟用網(wǎng)絡(luò)傳輸層安全協(xié)議 (TLS)踱卵,是不支持HTTP明文請(qǐng)求的,也就是支持HTTPS了据过。
所以解決方法是:
1.改成https請(qǐng)求
2.修改targetSdkVersion為28以下
3.向別人學(xué)習(xí)更全面的解決方案