最近我在华为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
任何帮助将不胜感激。
答案 0 :(得分:0)
也可以看看-https://koz.io/android-m-and-the-war-on-cleartext-traffic/
创建文件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>
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。
如果您具有android:targetSandboxVersion,则将其减小为1
AndroidManifest.xml-
<?xml version="1.0" encoding="utf-8"?>
<manifest android:targetSandboxVersion="1">
<uses-permission android:name="android.permission.INTERNET" />
...
</manifest>