H5W3
当前位置:H5W3 > 其他技术问题 > 正文

HttpURLConnection超时异常问题

最近在使用java网络连接时:具体如下:
URL url=new URL(“http://xxx.com.cn/“);
HttpURLConnection connect=(HttpURLConnection)url.openConnection();
connect.setConnectTimeout(500);//设置连接超时:500ms
connect.setReadTimeout(500);//设置读取超时:500ms

已经设置了超时,但是在本地环境中(断网的情况下),仍然要链接10多秒的时间,并且不会抛出SocketTimeoutException异常,想请教下大神们如何才能限制请求的时间,抛出超时这个异常呢
*******************************分割线****************************************
感谢 缪斯的情人 的热心解答
查看API以及网上搜索,然后断点跟踪进去看了一下:
HttpURLConnection connect=(HttpURLConnection)url.openConnection();
只会返回对象而不会真正建立连接,所以后面设置的连接超时和读取超时是可用的(通过设置超时为1ms,捕获到了超时异常).问题出在:本地网络是断开的,所以在调用connect.connect()的时候会抛出java.net.UnknownHostException异常.正是因为这样,导致连接十几秒的情况.
接下来的问题是,如何限制断网情况下尝试连接的时间呢(原谅我对网络这块的无知TT )

回答:

这个超时时间应该是根据socket超时时间判断的,所以时间较长,在httpclient中要设置两个属性,一个是链接超时时间,一个是socket超时时间,看了下HttpURLConnection中api,你可以设置setReadTimeout来限制从目标主机读取信息的超时时间

本文地址:H5W3 » HttpURLConnection超时异常问题

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址