使用httpclient中EntityUtils类解析entity遇到socket closed错误的缘由

本人在使用httpclient作接口测试的时候,最近程序偶然报socket closed错误,上周通过排查发现是request.releaseConnection()这个方法搞得鬼,也是本身学艺不精,没有真正理解方法的含义,改掉以后其余接口就没有出现过这个问题,今天又遇到了,又从新排查了本身的方法,发现还有一种致使socket closed的缘由,由于个人响应对象建立时用的是CloseableHttpResponse类,因此须要关闭,在某些时候response太大可能致使使用EntityUtils.toString(entity)解析实体的时候出错,我的理解是因为response的并未彻底解析到entity里面时已经执行了close()方法致使的,试着把close()方法后置,完美解决问题。java

下面是个人错误代码片断:编程

try {
			response.close();
		} catch (IOException e2) {
			output("响应关闭失败!", e2);
		}
		data_size = entity.getContentLength();// 获取相应数据大小
		if (data_size == -1) {// 若是为-1,则重置data_size
			data_size = 0;
		}
		String content = null;
		try {
			content = EntityUtils.toString(entity);// 用string接收响应实体
			
			EntityUtils.consume(entity);// 消耗响应实体
		} catch (ParseException e1) {
			output("解析响应实体异常!", e1);
		} catch (IOException e1) {
			output("解析响应实体时java IO 异常!", e1);
		} // 解析响应

下面是修改以后的代码片断:框架

String content = null;
		try {
			content = EntityUtils.toString(entity);// 用string接收响应实体
			EntityUtils.consume(entity);// 消耗响应实体
		} catch (ParseException e1) {
			output("解析响应实体异常!", e1);
		} catch (IOException e1) {
			output("解析响应实体时java IO 异常!", e1);
		} // 解析响应
		try {
			response.close();
		} catch (IOException e2) {
			output("响应关闭失败!", e2);
		}

技术类文章精选

  1. java一行代码打印心形
  2. Linux性能监控软件netdata中文汉化版
  3. 接口测试代码覆盖率(jacoco)方案分享
  4. 性能测试框架
  5. 如何在Linux命令行界面愉快进行性能测试
  6. 图解HTTP脑图
  7. 如何测试几率型业务接口
  8. httpclient处理多用户同时在线
  9. 将swagger文档自动变成测试代码
  10. 五行代码构建静态博客
  11. httpclient如何处理302重定向
  12. 基于java的直线型接口测试框架初探

非技术文章精选

  1. 为何选择软件测试做为职业道路?
  2. 成为杰出Java开发人员的10个步骤
  3. 写给全部人的编程思惟
  4. 自动化测试的障碍
  5. 自动化测试的问题所在
  6. 测试之《代码不朽》脑图

点击查看公众号地图

相关文章
相关标签/搜索