ConnectException:无法连接至Android 9中的.....

时间:2019-02-13 08:39:54

标签: java android

最近我在华为Mate 10中的android 9.0上的HttpUrlConnection遇到问题,我正在使用HttpUrlConnection检查我的手机的连接状态,但是当使用HttpUrlConnection .connect时,它表明我无法连接到[我的服务器网址]。

这是我的代码

URL url = new URL(appPrefs.getServerUrl());
            Log.e("Url :", appPrefs.getServerUrl());
                HttpURLConnection urlc = (HttpURLConnection) url
                        .openConnection();
                urlc.setConnectTimeout(5 * 1000);
                urlc.connect();

                return (urlc.getResponseCode() == 200)
                        ? Boolean.TRUE
                        : Boolean.FALSE;

此行发生错误:

urlc.connect();

错误:

java.net.ConnectException: Failed to connect to

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

也可以看看-https://koz.io/android-m-and-the-war-on-cleartext-traffic/

  • 选项1-

创建文件res / xml / network_security_config.xml-

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">Your URL(ex: 127.0.0.1)</domain>
    </domain-config>
</network-security-config>

AndroidManifest.xml-

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        ...
        android:networkSecurityConfig="@xml/network_security_config"
        ...>
        ...
    </application>
</manifest>
  • 选项2-

AndroidManifest.xml-

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        ...
        android:usesCleartextTraffic="true"
        ...>
        ...
    </application>
</manifest>

@ david.s的答案也指出android:targetSandboxVersion可能也是一个问题-

根据清单文档-

android:targetSandboxVersion

此应用程序要使用的目标沙箱。沙盒版本号越高,安全级别越高。默认值为1;默认值为1。您也可以将其设置为2。将此属性设置为2会将应用程序切换到其他SELinux沙箱。以下限制适用于2级沙箱:

网络安全配置中usesCleartextTraffic的默认值为false。 不允许共享Uid。

  • 所以选项3-

如果您具有android:targetSandboxVersion,则将其减小为1

AndroidManifest.xml-

<?xml version="1.0" encoding="utf-8"?>
<manifest android:targetSandboxVersion="1">
    <uses-permission android:name="android.permission.INTERNET" />
    ...
</manifest>

Android 8: Cleartext HTTP traffic not permitted复制