String login_url = "http://192.168.1.2/login.php";
URL url = new URL(login_url");
HttpURLConnection httpURLConnection =
(HttpURLConnection)url.openConnection();
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoOutput(true);
httpURLConnection.setDoInput(true);
OutputStream outputStream = httpURLConnection.getOutputStream();
....
我想向wampserver发送请求,但Android Studio会在标题上停止执行该消息。怎么了?我刚刚将Android Studio更新到最新版本(P)。这不是错误,我可以正常工作......我该如何解决这个问题?
答案 0 :(得分:8)
根据Network security configuration -
从Android 9.0(API级别28)开始,明确支持 默认情况下已禁用。
另请查看 - 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' answer指出android:targetSandboxVersion
也可能是一个问题 -
根据Manifest Docs -
android:targetSandboxVersion
此应用使用的目标沙箱。沙盒版本越高 数量越多,安全级别越高。其默认值为1;您 也可以将其设置为2.将此属性设置为2将应用程序切换为 一个不同的SELinux沙箱。以下限制适用于a 2级沙箱:
- Network Security Config中的默认值
usesCleartextTraffic
为false。- 不允许共享Uid。
所以选项3 -
如果android:targetSandboxVersion
中有<manifest>
,请将其缩小为1
AndroidManifest.xml -
<?xml version="1.0" encoding="utf-8"?>
<manifest android:targetSandboxVersion="1">
<uses-permission android:name="android.permission.INTERNET" />
...
</manifest>