HTTPClient(2018-08-30)

今天从第三方webservice接口获取数据的时候,Httpclient报错这个警告:warn:Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is rec

后来百度了一下,原来是客户端使用了 getResponseBodyAsString() 的缘故。后来把客户端改成 getResponseBodyAsStream()解决问题。

InputStream inputStream = method.getResponseBodyAsStream();  
    BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));  
    StringBuffer stringBuffer = new StringBuffer();  
    String str= "";  
    while((str = br.readLine()) != null){  
    stringBuffer .append(str );  
    }

      原因:报WARN的条件是((contentLength == -1) || (contentLength> limit)),也就是说,或者是返回的HTTP头没有指定contentLength,或者是contentLength大于上限(默认是1M)。如果能确定返回结果的大小对程序没有显著影响,这个WARN就可以忽略,可以在日志的配置中把HttpClient的日志级别调到ERROR,不让它报出来。

     HttpClient建议使用InputStream getResponseBodyAsStream()代替byte[]getResponseBody()。对于返回结果很大或无法预知的情况,就需要使用InputStreamgetResponseBodyAsStream(),避免byte[] getResponseBody()可能带来的内存的耗尽问题。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 2,726评论 0 3
  • [问题]:如何根据参数不同,来确定是升序排列,还是降序排序呢?
    jqClub阅读 1,730评论 0 1
  • 那些相似的夜晚 倾心的相遇 或 不经心的废弃 昨日尘封 愿你我安好 早安 —亦浓10.18
    开在夜里的花儿阅读 270评论 7 10
  • 每次到写周记的时候,心情可以用两个字来总结了——纠结!发生的事情太多,太乱,太杂了。要是随便拣些东西来写的话,老师...
    阿亮_H阅读 404评论 0 5