如今的android系統越來越注重用戶個人信息安全,比如最近的幾個版本對於明文傳輸數據控制的越來越嚴格,
就拿最新的Andorid 9而言,默認已經禁止明文傳輸,如果你的app的targetversion值是28以上,使用http開頭的url訪問就會報出如下錯誤
Cleartext traffic not permitted:xxxx
這種問題怎麼解決呢,谷歌肯定是希望大家都使用https開頭的url訪問,不過可能有些開發者還沒有來得及將自己的服務支持https,所以android系統還是給我們留了一個簡單的處理方式;
方式1
不要使用太高的targetversion,26以及以前的版本還是可以正常訪問http
方式2
在AndroidMainifest的加入android:usesCleartextTraffic
<application
android:usesCleartextTraffic="true"/>
方式3
在AndroidMainifest的加入networkSecurityConfig="@xml/network_security_config"
<application
networkSecurityConfig="@xml/network_security_config"/>
network_security_config放到xml目錄下
內容如下
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<!--允許所有url使用http明文請求服務 比如外部的地址,或者一些ip測試地址-->
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
還可以設置只允許部分域名http訪問
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<!--<base-config cleartextTrafficPermitted="true" />-->
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">sample.domain.com</domain>
</domain-config>
</network-security-config>
方式4(推薦)
url改成https