项目是Spring-boot的,两个项目(A和B) , A调用B
报错信息:
org.apache.http.TruncatedChunkException: Truncated chunk ( expected size: 720896; actual size: 318730)
- 接口表现出来的是数据传输不完整,丢包, 接口返回 json , 接收到的数据可能会少一截,偶尔为空,json 数据说不定会少个 } ,然后反序列化失败。
- 使用Postman请求,数据正常,但是返回慢,猜测数据量太大返回时请求未完成,所以设置下CloseableHttpClient 超时时间
代码修改
原来的:
private static String doHttp(HttpRequestBase request) throws Exception { // 通过连接池获取连接对象 CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm).build(); return doRequest(httpClient, request); }
更改后:
/** * 发送 HTTP 请求 * * @param request * @return * @throws Exception */ private static String doHttp(HttpRequestBase request) throws Exception { // 通过连接池获取连接对象 CloseableHttpClient httpClient = HttpClients.custom() .setConnectionManager(cm) .setConnectionTimeToLive(5, TimeUnit.SECONDS) // 连接存活时间 // .setConnectTimeout(1000) //连接超时时间 // .setConnectionRequestTimeout(1000) //从连接池中取的连接的最长时间 // .setSocketTimeout(10 * 1000) //数据传输的超时时间 // .setStaleConnectionCheckEnabled(true) //提交请求前测试连接是否可用 .build(); return doRequest(httpClient, request); }
再次运行,成功解决!
BUG记录-java发起http请求返回数据不全-org.apache.http.TruncatedChunkException
最新推荐文章于 2024-05-29 12:21:45 发布