java.net.unknown_Android 访问网络提示:java.net.UnknownServiceException: CLEARTEXT communication to not per...
时间: 2023-11-27 08:53:30 浏览: 158
这个错误是因为 Android 9.0 (API level 28) 及以上版本不再支持明文传输(Cleartext Traffic),即应用不能使用不加密的 HTTP 协议与网络进行通信。如果你需要使用 HTTP 协议进行网络通信,需要在应用的 AndroidManifest.xml 文件中添加以下代码:
```xml
<application
...
android:usesCleartextTraffic="true">
...
</application>
```
这个设置会允许应用使用明文传输,但是并不推荐在正式应用中使用明文传输,建议使用 HTTPS 协议进行加密传输。如果你已经有了一个支持 HTTPS 的服务器,应该将应用中使用的 URL 改成 HTTPS 协议的,这样就能避免使用明文传输了。
相关问题
E/AndroidRuntime: FATAL EXCEPTION: Thread-18 Process: com.example.read, PID: 22568 java.lang.RuntimeException: java.net.UnknownServiceException: CLEARTEXT communication to 192.168.210.113 not permitted by network security policy at com.example.read.upload_serverActivity$1.run(upload_serverActivity.java:111) at java.lang.Thread.run(Thread.java:920) Caused by: java.net.UnknownServiceException: CLEARTEXT communication to 192.168.210.113 not permitted by network security policy at okhttp3.internal.connection.RealRoutePlanner.planConnectToRoute$okhttp(RealRoutePlanner.kt:195) at okhttp3.internal.connection.RealRoutePlanner.planConnect(RealRoutePlanner.kt:152) at okhttp3.internal.connection.RealRoutePlanner.plan(RealRoutePlanner.kt:67) at okhttp3.internal.connection.FastFallbackExchangeFinder.launchTcpConnect(FastFallbackExchangeFinder.kt:118) at okhttp3.internal.connection.FastFallbackExchangeFinder.find(FastFallbackExchangeFinder.kt:62) at okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.kt:267) at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:32) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:95) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:84) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:65) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:205) at okhttp3.internal.connection.RealCall.execute(RealCall.kt:158) at com.example.read.upload_serverActivity$1.run(upload_serverActivity.java:106) at java.lang.Thread.run(Thread.java:920) 怎么解决
这个错误是因为您的应用程序正在使用 HTTP 协议进行与服务器的通信,而 Android Pie 及更高版本默认不允许您的应用程序使用未加密的 HTTP 协议进行通信。这是为了提高应用程序的安全性,以避免敏感数据被窃取或篡改。
要解决这个问题,您可以采取以下两种方法之一:
1. 在您的 AndroidManifest.xml 文件中添加以下代码,以允许您的应用程序使用 HTTP 协议进行通信:
```
<application
android:usesCleartextTraffic="true"
...>
...
</application>
```
2. 将您的应用程序迁移到使用 HTTPS 协议进行通信,这样就可以避免这个错误。 HTTPS 协议可以确保数据的加密和完整性,从而提高应用程序的安全性。
建议采用第二种方法,因为它更加安全可靠,可以保护用户数据的安全。
java.net.UnknownServiceException: CLEARTEXT communication to 192.168.0.71 not permitted by network security policy
这个错误通常是因为你的应用程序在 Android 9.0 或更高版本中使用了非安全的 HTTP 连接(也称为 cleartext)。在 Android 9.0 或更高版本中,默认情况下禁用了 cleartext 流量。
要解决此问题,你可以采取以下措施之一:
1. 使用 HTTPS 连接。这是最安全的选项,因为 HTTPS 连接使用 TLS/SSL 加密通信。
2. 在你的 AndroidManifest.xml 文件中添加以下代码以允许 cleartext 流量:
```xml
<application
android:usesCleartextTraffic="true"
...>
...
</application>
```
使用此选项时,请确保你的服务器端代码安全。
希望这可以帮助你解决问题。
阅读全文