内网服务器搭建了四个节点的测试环境,本地去链接的时候出现异常。
错误原因是okhttp的问题
网上找到解决方案需要在okhttp客户端使用的时候添加 .addHeader(“Connection”,“close”).build();,
或者
OkHttpClient client = new OkHttpClient.Builder()
.retryOnConnectionFailure(true)
.build();
还未测试是否可行
内网服务器搭建了四个节点的测试环境,本地去链接的时候出现异常。
错误原因是okhttp的问题
网上找到解决方案需要在okhttp客户端使用的时候添加 .addHeader(“Connection”,“close”).build();,
或者
OkHttpClient client = new OkHttpClient.Builder()
.retryOnConnectionFailure(true)
.build();
还未测试是否可行
请问是必现的还是偶尔会出现,看到有人反馈的情况可能是服务端那边给直接断开了,会产生EOFExcpetion。
基本上是必现,有次debug的时候连接上了。服务器端是正常的
而且我用postman去请求是可以返回的,就是在开发工具里面访问出现这个情况
我的意思是不要debug,能不能跑出结果来
跑不出结果,报上面那个错误
java版本:
openjdk version “1.8.0_212-release”
OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4)
OpenJDK 64-Bit Server VM (build 25.212-b4, mixed mode)
sdk版本:
20.2.0
我在网上搜到一篇相关的帖子
我看里面说是跟客户端和服务端的超时时间设置有关。
cita的jsonrpc server的超时时间是可以在jsonrpc.toml里面设置的,默认是60s。
[http_config]
allow_origin = "*"
timeout = 60
可以修改一下这个设置看是否能解决问题?
cita sdk java创建client的时候是用的默认配置,okhttp的默认超时时间好像是10s?感觉不符合前面帖子里第一种情况。
找到问题了,是公司安装了代码加密工具,监控了IDEA开发工具,在IDEA中运行单元测试,返回的数据貌似被处理过,导致okhttp3 response解析失败。单独把项目打包出来运行,调用成功。