Didn't-find-class-"org-apache-http-entity-StringEntity"-on-path

今天在測試android api 28上的兼容問題時(shí),出現(xiàn)2個的異常:

Didn't find class "org.apache.http.entity.StringEntity" on path

在過去的 Android 6 中,取消了對 Apache HTTP 客戶端的支持, 而從 Android 9 開始官方又過分了,默認(rèn)情況下該內(nèi)容庫已從 bootclasspath 中移除且不可用于應(yīng)用,原因未知,望告知。
所以 Android 6.0 以上時(shí),如果想使用org.apache.http的話,可以在gradle中android配置下寫入:

useLibrary 'org.apache.http.legacy'

在Android 9以上時(shí),如果還要繼續(xù)使用org.apache.http的話,可以在AndroidManifest.xml中application節(jié)點(diǎn)下面寫入:

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

而第二個異常:

onFailurejava.io.IOException: Cleartext traffic not permitted

其原因是在Android 9以上系統(tǒng)中,默認(rèn)情況下啟用網(wǎng)絡(luò)傳輸層安全協(xié)議 (TLS),是不支持HTTP明文請求的,也就是支持HTTPS了。
所以解決方法是:
1.改成https請求
2.修改targetSdkVersion為28以下
3.向別人學(xué)習(xí)更全面的解決方案

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容