android - 无法连接到 Android 10 中的 HTTP URL

标签 android http https retrofit2 socket-timeout-exception

我正在使用 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/

相关文章:

ios - TIC TCP 连接失败 1 :54 Err(54)

node.js - AWS Lambda 阻止所有传出 URL 调用

ssl - OpenSSL 生成证书链

java - 使用 viewPager 滚动所有布局

javascript - 模拟http请求

java - 安全使用 HttpURLConnection

php - 带授权的本地http请求

java - 截图效果安卓

Android-AVD :error loading preferences

android - 如何为另一个应用程序的广播接收器创建一个新的 Intent?