关于httpclient中的execute阻塞问题,卡住不动了
//简化代码如下,手打的有点乱 new Thread(public run(){ while(isOK){ HttpGet get=newHttpGet("http://test.get.com"); response = httpClient.execute(get); test1 = EntityUtils.toString(response.getEntity()); for(i;i<test1.size;i++){ String test2=test[i]; if(test2=0){ HttpPost post =newHttpPost("http://www.test.com"); HashMap<String, String> paramMap=newHashMap<String, String>(); paramMap.put("ie","utf-8"); paramMap.put("kw", postName); // ......... response = httpClient.execute(post);//第一次循环可以执行到这一句,然后一直卡死在此处. } else{ system.out.println("未查找到数据,等待下次刷新数据"); } } } } ).star() //请问各位大神这是怎么回事啊,只能循环post提交一次,第二次就卡在代码注释处不动,也不报错 //网上查过好像说是execute阻塞,但是没找到方法解决,有人遇到过吗
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(14)
就是看不懂英语。。悲哀
我早查到那个贴了,确实关了就能用,但是循环时还得报错,管理cookie也麻烦,我选择了一楼的解决方式= =
请先阅读下Http Component的官方文档吧。
关了再循环好像也不行,关了httpClient对象好像还报错
回复
不是关闭httpclient,而是关闭每次的返回对象。
恩恩,我在网上也查到了,试了下确实可以了,感谢啊
回复
是把关闭写在循环体里面吗
我也遇到这个问题,每次循环都创建新的httpclient可以解决这个问题。
今天遇到了,循环里面放response = httpClient.execute(get);循环几次就不行了,卡住不动了
算了,你跟我用不是一个东西
回复
@3kqing : 就是一个啊。你记得用了关闭一下资源,就不会出错了,亲测。res.getEntity().getContent().close();
回复
@舔狗 : 牛皮,解决了,感谢
回复
老哥,几年前的贴了,你还回我。。
具体是怎么解决的,代码放出来啊