在用httpClient时,tomcat的控制台报出以下警告。

2018-09-17 14:25:01,447  WARN (org.apache.commons.httpclient.HttpMethodBase:682) - Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.

查看代码,在用httpclient做请求时,用的是String respStr = method.getResponseBodyAsString()

查看getResponseBodyAsString()源代码

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

当然,这个警告也是有意义的,HttpClient建议使用InputStream getResponseBodyAsStream()代替byte[]getResponseBody()。对于返回结果很大或无法预知的情况,就需要使用InputStreamgetResponseBodyAsStream(),避免byte[] getResponseBody()可能带来的内存的耗尽问题。 部署到tomcat之后,tomcat和redis多次挂掉。原因就是内存耗尽。

如果返回的头信息没有指定长度或长度大于1M则抛出如上异常。
则需把 getResponseBodyAsString()换成 getResponseBodyAsStream()即可

HttpClient client=new HttpClient();

GetMethod method=new GetMethod(URL);

PostMethod method = new PostMethod(URL);

client.executeMethod(method);

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);

}

String  respStr = stringBuffer.toString();

这样就可以对返回的字符串respStr进行进一步解析了。

Using getResponseBodyAsStream instead is recommended相关推荐

  1. HTTP Client 编写

    手头生正好有一个HTTP Client例子,使用socket 连接.代码如下: import java.io.InputStream; import java.io.OutputStream; imp ...

  2. Springboot整合xxl-job实现任务自定义定时任务

    1.引入相关依赖 maven:<dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job ...

  3. JAVA—HTTP客户端警告:Going to buffer response body of large or unknown size.

    关注微信公众号:CodingTechWork,一起学习进步. 原编码问题   在修复原有代码bug时,发现日志里经常抛出Going to buffer response body of large o ...

  4. httpclient 在获取返回值时,使用getResponseBody触发警告的问题

    使用 byte[] bs = postMethod.getResponseBody();  接收数据量小还是可以的,但是量大之后就会报错: Going to buffer response body ...

  5. httpClient笔记

    NonRepeatableRequestException: Cannot retry request with a non-repeatable request entity 报错信息:org.ap ...

  6. 【全栈接口测试进阶系列教程】精通api接口测试,接口分类,接口架构,http,webservice,dubbo接口协议,接口流程,接口工具,cookie,session,token接口鉴权原理以及实战

    目录 一,[什么是接口测试?为什么要作接口测试] 1.接口的作用 2.为什么要做接口测试 3.接口都有哪些类型? 二,[接口测试的分类] 接口的分类: http和webservice接口区别: 三,[ ...

  7. 使用httpclient必须知道的参数设置及代码写法、存在的风险

    原文出处:  张开涛 结论: 如果使用httpclient 3.1并发量比较大的项目,最好升级到httpclient4.2.3上,保证并发量大时能抗住.httpclient 4.3.3,目前还有一些b ...

  8. 全网封神最新最全:用最通俗易懂的方式来讲解http,WebService,Dubbo接口协议接口测试

    目录 一.接口 1)接口分类 2)软件接口分类 3)常见的接口协议 4)接口测试 二.HTTP协议解读 1)http协议:超文本传输协议 2)https:简单的来说,就是http的安全版,在http下 ...

  9. openfire html5,XMPP,Smack,Openfire 异常、问题总结

    1.Smack 4.2.3,入群时老是报无响应,还未找到缘由(源码问题),已找到缘由,openfire4.2.0+版本自身bug,不支持用户110状态html Exception=org.jiveso ...

最新文章

  1. 想要准备阿里/百度/腾讯/美团的面试?了解一下
  2. 构造函数不可以是虚函数;析构函数可以是虚函数,也可以是纯虚函数。
  3. 20170125小测
  4. 构造函数为什么不能是虚函数 ( 转载自C/C++程序员之家)
  5. 前端学习(1367):什么是中间件
  6. 多层陶瓷电容器用处_陶瓷电容器的用途有哪几种?
  7. SD卡中FAT32文件格式高速入门(图文具体介绍)
  8. JavaWeb:重定向(redirect)和转发(forward)的区别
  9. 2019年区块链多币种钱包建设的安全性与可用性
  10. L1-049 天梯赛座位分配(模拟)
  11. 推荐使用一个modbus调试助手
  12. 图像JPEGEXIF格式介绍(一)
  13. 集束搜索(Beam Search)
  14. Linux终端语系设置,iconv语系编码转换命令
  15. OpenPlanner变道遇到的问题及解决
  16. 2012年9月ITbrand手机品牌排行榜
  17. Xilinx GT学习
  18. python-23-递归:这帮小兔崽子
  19. 区块链如何赋能传统会员积分体系,产生溢出效应
  20. C语言实现CRC16和CRC32校验

热门文章

  1. INCREMENTAL BACKUP
  2. Communix操作系统发展简史
  3. 笔趣阁小说站的爬虫小程序
  4. 推荐系统实践读书笔记-06利用社交网络数据
  5. 网易163邮箱无法使用第三方客户端登录问题解决
  6. 选购哪种护眼灯对眼睛好,让我们一起来看看吧
  7. 青龙面板-酷狗音乐(2022.5.5)
  8. 第一次买了自己的云服务器用来折腾些什么
  9. 数据库系统概论(第十章数据库恢复技术)
  10. 无法加载静态的图片Failed to load resource: the server responded with a status of 404 (Not Found)