美文网首页
HTTPClient(2018-08-30)

HTTPClient(2018-08-30)

作者: 小超人爱小土豆 | 来源:发表于2018-08-30 17:39 被阅读57次

今天从第三方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()可能带来的内存的耗尽问题。

相关文章

网友评论

      本文标题:HTTPClient(2018-08-30)

      本文链接:https://www.haomeiwen.com/subject/edkdwftx.html