之前我在Java Web项目中,网络请求用的是okhttp
,今天发现很多网络请求都不通,通过日志发现,发现使用okhhtp
出现了错误。
请求失败:CLEARTEXT communication not enabled for client
我的okhttp版本为
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.10.0</version>
</dependency>
然后我在网上查询问题,网上给出的回答是:
这个问题通常是由于网络请求使用了非加密的明文传输而引起的。默认情况下,Android 9.0(API级别28)之后的版本禁止应用程序使用明文HTTP进行网络通信,以提高数据的安全性。如果应用程序尝试使用不安全的明文通信,就会出现"CLEARTEXT communication not enabled for client"的错误。
为了解决这个问题,你可以通过以下几种方法之一来启用明文通信:
- 升级到使用加密的HTTPS通信,这是推荐的方法。你可以使用自签名证书或从有效的证书颁发机构(CA)获取的证书来配置HTTPS。
- 在应用程序的AndroidManifest.xml文件中添加以下代码来启用明文通信:
<application
…
android:usesCleartextTraffic=“true”
…>
…
</application>
但是我是Java WEB的项目,不是Android项目,不能用这种方式。
后面创建okHttpClient
对象时修改了一下配置就解决问题了
if (okHttpClient == null) {
synchronized (OkHttpUtils.class