当前位置: 代码迷 >> 综合 >> BUG记录-java发起http请求返回数据不全-org.apache.http.TruncatedChunkException
  详细解决方案

BUG记录-java发起http请求返回数据不全-org.apache.http.TruncatedChunkException

热度:15   发布时间:2024-02-22 12:43:04.0

项目是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);}

再次运行,成功解决!