http请求---请为我设置超时时间

  

    下午在调试一个自动升级的功能,升级时突然拔掉网线,程序应该马上提示网络断开,升级失败。但是在某些厂商的鸡腚核上进度条始终停在某个位置,不报错也不崩溃,死在了那里。

    因为是断网环境,所以看不到logcat打印出来的日志。只好研究了断网日志是如何输出的,参见 断网日志输出到SD卡 --http://www.67tgb.com/?p=582

    不得不说日志是个好东西,在我们看不到的角落,忠诚的记载着应用内部发生的一切变化。

    通过打印一些方法的执行时间,发现在使用HttpUrlConnect打开网络连接之后,程序阻塞在了InputStream 的read()的方法上。这个方法本来就是一个阻塞的方法,一直在等待读取网络端的数据,本身会抛出IO异常。

    在某些盒子上,拔掉网线会迅速抛出IO异常,但是有的盒子则始终处于阻塞状态。仔细读了一些API才猛然发现,自己没有为Http请求设置连接超时和读取超时。

    虽然是很小的一个问题,但是却找了很长时间才确定。写篇博客牢记以下。

    DefaultHttpClient 设置超时方式如下:

    

DefaultHttpClient client = new DefaultHttpClient();
 
client.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 15000);
 
client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 15000);

    现实生活也是这样的,比如打电话,呼叫超过一分钟没人接听,则自动断开通话,防止阻塞信道。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值