Android使用Retrofit报错java.net.UnknownServiceException

由于Retrofit底层使用是基于OkHttp3的,但是OkHttp3会默认使用密文传输,代码中使用Http协议,也就是使用明文传输,所以OkHttp3会主动的报错,然后阻止线程的运行。所以会直接报错,但是这个报错并不是在所有型号的手机上都会发生的,比如:一加3正常运行,华为手机无法连接服务器。
解决办法
解决办法有两种,分别为:

  1. 修改配置文件,使OkHttp3允许使用明文传输。
  2. 直接使用Https协议。
    我们这里主要介绍一下第一种方法:
    在 res 下新建一个 xml 目录,然后创建一个名为:network_security_config.xml 文件
    network_security_config.xml:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

然后在AndroidManifest.xml 的application标签内应用上面的xml配置:

<application
    android:name=".App"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:networkSecurityConfig="@xml/network_security_config"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:theme="@style/AppTheme">
</application>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章