android: 报错: CLEARTEXT communication to site not permitted by network security policy
一,报错信息:
FATAL EXCEPTION: main
Process: com.example.okdemo2, PID: 3158
java.net.UnknownServiceException: CLEARTEXT communication to www.testit.net not permitted by network security policy
at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:164)
at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.java:224)
at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.java:108)
at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.java:88)
at okhttp3.internal.connection.Transmitter.newExchange(Transmitter.java:169)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:41)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117)
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:94)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:88)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
二,原因:
这个错误通常出现在Android 9.0(API 28)及以上版本中,
当应用尝试使用HTTP明文传输时会被系统阻止,
这里的报错是因为代码中访问了http打头而不是https打头的主机地址
三,解决:
1,改用https访问就可以了
2,临时解决方法:
编辑AndroidManifest.xml,
增加一行
android:usesCleartextTraffic="true"
浙公网安备 33010602011771号