无法连接到 Android 10 中的 HTTP URL

noo*_*Bot 3 https android http socket-timeout-exception retrofit2

我正在使用http://somethingAPI 进行登录过程。但无法在 Android 10 中使用 API。对于该版本的其余部分,API 运行良好。首先,我收到了SocketTimeoutException。然后我尝试了以下解决方案。

1)<application>在 Manifest 中添加了以下属性。

android:usesCleartextTraffic="true"
Run Code Online (Sandbox Code Playgroud)

结果:仍然收到SocketTimeoutException

2)然后我补充说networkSecurityConfig

<network-security-config>
<domain-config cleartextTrafficPermitted="true">
    <domain includeSubdomains="true">project.dev.company:6001/</domain>
    <trust-anchors>
        <certificates src="system"/>
    </trust-anchors>
</domain-config>
</network-security-config>
Run Code Online (Sandbox Code Playgroud)

结果:UnknownServiceException:网络安全策略不允许与 project.dev.company:6001/ 的 CLEARTEXT 通信。

3) 还尝试在<base-config>. 仍然收到SocketTimeoutException

如何允许我的应用从 Android 10 访问 HTTP 连接?我正在使用 Retrofit2 进行网络呼叫。

ali*_*ani 5

在您的 xml 文件中使用此代码

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
   <domain-config cleartextTrafficPermitted="true">
      <domain includeSubdomains="true">project.dev.company</domain>
   </domain-config>
</network-security-config>
Run Code Online (Sandbox Code Playgroud)

并在清单中使用此代码:

android:usesCleartextTraffic="true"
android:networkSecurityConfig="@xml/network_security_configuration"
Run Code Online (Sandbox Code Playgroud)

域中不需要任何“/”和端口,就像我一样使用

编辑:

您可以使用 api 主机的 IP,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
      <domain includeSubdomains="true">192.168.1.1</domain>
   </domain-config>
</network-security-config>
Run Code Online (Sandbox Code Playgroud)