当HttpURLConnection.connect超时后怎么判断是超时导致的IOException??

warp_drive 2011-08-09 06:02:08
如题:
private HttpURLConnection conn=null;
... ...
try{
URL u = new URL(requestURL);
conn = (HttpURLConnection)u.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
conn.setRequestProperty("Charset","UTF-8");
conn.setRequestProperty("Content-type","text/xml");
conn.setRequestMethod("POST");
conn.setConnectTimeout(CONNECT_TIMEOUT);
conn.setReadTimeout(READ_TIMEOUT);
conn.connect();
... ...
}catch(MalformedURLException e){

return false;
}catch(IOException e){
//此处怎么判断是调用connect方法超时后抛出的IO异常??
return false;
}catch(ZSException e){

return false;
}catch(Exception e){

return false;
}
finally{
if(conn!=null) conn.disconnect();
}
...全文
556 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
humanity 2011-08-10
  • 打赏
  • 举报
回复
观察了下面这个 stack trace 就该知道了吧。
[code=Java]
java.net.SocketTimeoutException: connect timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:352)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:214)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:201)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:377)
at java.net.Socket.connect(Socket.java:530)
at sun.net.NetworkClient.doConnect(NetworkClient.java:170)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:406)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:541)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:245)
at sun.net.www.http.HttpClient.New(HttpClient.java:318)
at sun.net.www.http.HttpClient.New(HttpClient.java:335)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:832)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:773)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:698)
at Socket.main(Socket.java:34)

</code>
阳明 to life 2011-08-10
  • 打赏
  • 举报
回复
SocketTimeoutException - 如果在建立连接之前超时期满
捕捉这个
xiachedan 2011-08-10
  • 打赏
  • 举报
回复
IOException 内通常都是IO引起的,不需要判断。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧