cita-java-sdk 无法链接到区块链节点

内网服务器搭建了四个节点的测试环境,本地去链接的时候出现异常。

错误原因是okhttp的问题

网上找到解决方案需要在okhttp客户端使用的时候添加 .addHeader(“Connection”,“close”).build();,
或者

OkHttpClient client = new OkHttpClient.Builder()
    .retryOnConnectionFailure(true)
    .build();

还未测试是否可行

@UDLD @angiie 看下

@xiao8 辛苦贴一下你调用SDK的代码,谢谢






最终结果:

请问是必现的还是偶尔会出现,看到有人反馈的情况可能是服务端那边给直接断开了,会产生EOFExcpetion。

基本上是必现,有次debug的时候连接上了。服务器端是正常的

而且我用postman去请求是可以返回的,就是在开发工具里面访问出现这个情况

我的意思是不要debug,能不能跑出结果来

跑不出结果,报上面那个错误

@xiao8 请问用的sdk哪个版本,另外请备注下java版本

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

@xiao8
本地尝试复现是OK的,你看下截图

我在网上搜到一篇相关的帖子


我看里面说是跟客户端和服务端的超时时间设置有关。
cita的jsonrpc server的超时时间是可以在jsonrpc.toml里面设置的,默认是60s。

[http_config]
allow_origin = "*"
timeout = 60

可以修改一下这个设置看是否能解决问题?

cita sdk java创建client的时候是用的默认配置,okhttp的默认超时时间好像是10s?感觉不符合前面帖子里第一种情况。

https://github.com/citahub/cita-sdk-java/blob/23866215e1fbad74e5c7c9b78506e1e9abb2819b/core/src/main/java/com/citahub/cita/protocol/http/HttpService.java#L76

找到问题了,是公司安装了代码加密工具,监控了IDEA开发工具,在IDEA中运行单元测试,返回的数据貌似被处理过,导致okhttp3 response解析失败。单独把项目打包出来运行,调用成功。