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)。这不是错误,我可以正常工作......我该如何解决这个问题?
根据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沙箱。以下限制适用于2级沙箱:
- 网络安全配置中的
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>