📅  最后修改于: 2023-12-03 14:42:00.166000             🧑  作者: Mango
当程序员在使用 Java 进行网络通信时,可能会接收到如下错误提示:
HTTP 失败:java.net.UnknownServiceException:网络安全策略不允许与 ztdev.co.za 进行 CLEARTEXT 通信
这个错误提示告诉我们,当我们尝试与 ztdev.co.za
进行 CLEARTEXT
通信时,网络安全策略禁止了这种操作,导致请求失败。
这个错误的原因在于 Android 9.0(API 级别 28) 开始默认禁止明文流量的网络请求。在这种情况下,如果你尝试使用未加密的 HTTP 连接请求网络资源,Android 会拒绝这些请求。
为了解决这个问题,你可以使用以下方法之一:
将远程服务器 ztdev.co.za
从使用 CLEARTEXT
连接修改为使用 HTTPS
连接。这是最好的解决方案,因为它提供了安全的网络通信。
在 Android 的 AndroidManifest.xml
文件中添加以下代码,以使你的应用允许使用CLEARTEXT
通信:
<application
android:usesCleartextTraffic="true"
...
</application>
ztdev.co.za
的位置设置属性,以允许使用 CLEARTEXT
通信:URL url = new URL("http://ztdev.co.za");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
conn.setConnectTimeout(10000);
conn.setReadTimeout(10000);
conn.setUseCaches(false);
conn.setRequestMethod("GET");
// 添加以下代码
conn.setRequestProperty("Connection", "close");
}
注意:这种解决方案并不建议经常使用,因为它降低了安全性。
在 Android 9 及以上版本中,系统默认禁止了使用CLEARTEXT
连接的网络请求,这是防止数据在网络传输过程中被窃取的一种重要方式。因此,我们需要在使用网络请求时注意该问题并采取相应的措施。