java.net.UnknownServiceException: CLEARTEXT communication to wanandroid.com not permitted by network
java.net.UnknownServiceException: CLEARTEXT communication to wanandroid.com not permitted by network?
問(wèn)題描述:(我后面說(shuō)的羅里吧嗦一大堆,其實(shí)就是網(wǎng)絡(luò)請(qǐng)求沒請(qǐng)求到數(shù)據(jù),著急的小伙伴直接看解決方案)在做視頻下載的時(shí)候,一直下載不到本地的文件中,就翻到最里層的代碼去看,翻了一天,終于到了網(wǎng)絡(luò)請(qǐng)求的那一步,發(fā)現(xiàn)請(qǐng)求不到數(shù)據(jù),仔細(xì)看了看okhttp請(qǐng)求的代碼,What?開玩笑呢?沒毛病啊? ?后來(lái)重新寫了一個(gè)網(wǎng)絡(luò)請(qǐng)求,發(fā)現(xiàn)失敗回調(diào)的方法里竟然有這個(gè)異常,就搜了一下,看到了這篇文章,最后,終于把問(wèn)題給解決了,又看了幾篇其他作者的文章,發(fā)現(xiàn)還有其他的解決辦法,
錯(cuò)誤原因:這個(gè)錯(cuò)誤是在安卓P系統(tǒng)上當(dāng)調(diào)用遠(yuǎn)程接口進(jìn)行網(wǎng)絡(luò)通信時(shí)報(bào)的錯(cuò)誤。
大白話:由于 Android P(版本27以上) 限制了明文流量的網(wǎng)絡(luò)請(qǐng)求,非加密的流量請(qǐng)求都會(huì)被系統(tǒng)禁止掉。所以如果當(dāng)前應(yīng)用的請(qǐng)求是 htttp 請(qǐng)求,而非 https ,這樣就會(huì)導(dǎo)系統(tǒng)禁止當(dāng)前應(yīng)用進(jìn)行該請(qǐng)求。
專業(yè)術(shù)語(yǔ):Android致力于保護(hù)用戶們的設(shè)備和數(shù)據(jù)安全。我們保證數(shù)據(jù)安全的方法之一是保護(hù)所有進(jìn)入或離開Android設(shè)備的數(shù)據(jù)在傳輸中使用傳輸層安全性(TLS)。正如我們?cè)贏ndroid P開發(fā)人員預(yù)覽中所宣布的那樣,我們通過(guò)阻止針對(duì)Android P的應(yīng)用程序默認(rèn)允許未加密的連接來(lái)進(jìn)一步改進(jìn)這些保護(hù)。這是我們多年來(lái)為更好地保護(hù)Android用戶而做出的各種更改。為了防止意外的未加密連接,我們android:usesCleartextTraffic在Android Marshmallow中引入了manifest屬性。在Android Nougat中,我們通過(guò)創(chuàng)建Network Security Config功能擴(kuò)展了該屬性,該功能允許應(yīng)用程序指示他們不打算在沒有加密的情況下發(fā)送網(wǎng)絡(luò)流量。在Android Nougat和Oreo中,我們?nèi)匀辉试S明文連接。
?
解決方法:共四種
1、如果一定要使用明文通信的話,則可以打開AndroidManifest.xml 文件,在 application 元素中添加:
android:usesCleartextTraffic="true"
備注:
1)為了安全,不建議上面的使用明文的通信方式,不過(guò)上面的這種方法可以作為一種臨時(shí)的通信策略
2)如果聲明不使用明文通信,則可以在application元素中添加:
android:usesCleartextTraffic=”false”?
此聲明指示該應(yīng)用不使用明文網(wǎng)絡(luò)通信,并使 Android Marshmallow 的平臺(tái)網(wǎng)絡(luò)堆棧禁止該應(yīng)用中的明文通信。例如,如果您的應(yīng)用意外嘗試通過(guò) HTTP 明文請(qǐng)求登錄用戶,該請(qǐng)求將被阻止,該用戶的身份和密碼信息不會(huì)泄露到網(wǎng)絡(luò)上。
2、項(xiàng)目改用https請(qǐng)求;
3、項(xiàng)目的targetSdkVersion改為27以下;
4、在res的xml目錄下,新建一個(gè)xml文件(名稱自定義,如:network_security_config.xml),內(nèi)容如下:
<?xml version="1.0" encoding="utf-8"?> <network-security-config><base-config cleartextTrafficPermitted="true" /> </network-security-config>在manifest清單文件配置application:
<application ...android:networkSecurityConfig="@xml/network_security_config" .../>轉(zhuǎn)載??https://blog.csdn.net/pengyu1801/article/details/87879850? 和 https://blog.csdn.net/mysimplelove/article/details/84063571兩篇博文,留著只是當(dāng)做筆記使用,幸運(yùn)的話,還能解決一些小伙伴的問(wèn)題
總結(jié)
以上是生活随笔為你收集整理的java.net.UnknownServiceException: CLEARTEXT communication to wanandroid.com not permitted by network的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 解决Redmi 6 pro底部出现黑边问
- 下一篇: NullPointerException