MDA/MDD/TDD/DDD/DDDDDDD
posts - 536, comments - 111, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

HttpURLConnection设置网络超时

Posted on 2010-04-13 19:00 leekiang 阅读(1628) 评论(0)  编辑  收藏 所属分类: javaio,tcp
Java中可以使用HttpURLConnection来请求WEB资源。
HttpURLConnection对象不能直接构造,需要通过 URL.openConnection()来获得HttpURLConnection对象,示例代码如下:
String urlStr= www.ttt.org;
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();

 

HttpURLConnection是基于HTTP协议的,其底层通过socket通信实 现。如果不设置超时(timeout),在网络异常的情况下,可能会导致程序僵死而不继续往下执行。可以通过以下两个语句来设置相应的超时:
System.setProperty("sun.net.client.defaultConnectTimeout", 超时毫秒数字符串);
System.setProperty("sun.net.client.defaultReadTimeout", 超时毫秒数字符串);

其中: sun.net.client.defaultConnectTimeout:连接主机的超时时间(单位:毫秒)
sun.net.client.defaultReadTimeout: 从主机读取数据的超时时间(单位:毫秒)

例如:
System.setProperty("sun.net.client.defaultConnectTimeout", "30000");
System.setProperty("sun.net.client.defaultReadTimeout", "30000");

JDK 1.5以前的版本,只能通过设置这两个系统属性来控制网络超时。在1.5中,还可以使用HttpURLConnection的父类 URLConnection的以下两个方法:
setConnectTimeout:设置连接主机超时(单位:毫秒)
setReadTimeout: 设置从主机读取数据超时(单位:毫秒)

例如:
HttpURLConnection urlCon = (HttpURLConnection)url.openConnection();
urlCon.setConnectTimeout(30000);
urlCon.setReadTimeout(30000);

来源:http://www.xd-tech.com.cn/blog/article.asp?id=37

另外可参考java中处理http连接超时的方法

JDK中的URLConnection参数详解

linux下设置connect连接超时的方法

java socket 用法(一)

Linux,可以修改/proc/sys/net/ipv4/tcp_syn_retries的值,缺省是72,大约5分钟左右,改小点时间就短些


只有注册用户登录后才能发表评论。


网站导航: