天天看點

【Android】OkHttp報錯:java.net.UnknownServiceException

問題

在Android 9.0手機使用OkHttp請求一個http位址,會報如下錯誤。

java.net.UnknownServiceException: CLEARTEXT communication to **** not permitted by network security policy

原因是Android 9.0以後,Google官方解釋:

為保證使用者資料和裝置的安全,Google針對下一代 Android 系統(Android P) 的應用程式,将要求預設使用加密連接配接,這意味着

Android P 将禁止 App 使用所有未加密的連接配接,是以運作 Android P

系統的安卓裝置無論是接收或者發送流量,未來都不能明碼傳輸。

三種解決辦法

  • APP 改用 https 請求
  • argetSdkVersion 降到27以下更改
  • 網絡安全配置

第三種方法實作

在res檔案夾下建立一個xml檔案夾,然後在xml目錄下建立一個network_security_config.xml檔案,檔案内容如下:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>             
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>      
android:networkSecurityConfig="@xml/network_security_config"