我正在使用 http://something
用于登录过程的 API。但无法在 Android 10 中使用 API。对于其余版本,API 运行良好。
首先,我遇到了 SocketTimeoutException。然后我尝试了以下解决方案。
1) 添加以下属性到 <application>
在 list 中。
android:usesCleartextTraffic="true"
结果:仍然得到 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>
结果:UnknownServiceException:网络安全策略不允许与 project.dev.company:6001/的 CLEARTEXT 通信。
3) 还尝试在 <base-config>
中允许 CLEARTEXT| .仍然得到 SocketTimeoutException。
如何允许我的应用从 Android 10 访问 HTTP 连接?我正在使用 Retrofit2 进行网络调用。
最佳答案
在您的 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>
并在 list 中使用此代码:
android:usesCleartextTraffic="true"
android:networkSecurityConfig="@xml/network_security_configuration"
域中不需要任何“/”和端口,像我一样使用即可
编辑:
你可以使用你的 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>
关于android - 无法连接到 Android 10 中的 HTTP URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58407173/