关于HttpURLConnection:Connection timed out: connect 问题

Spring89 2012-04-10 03:34:51

private String getWebData(String strurl) {
try {
URL url = new URL(strurl);
// 打开连接,此处只是创建一个实例,并没有真正的连接
HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
httpCon.setConnectTimeout(30000);
httpCon.setReadTimeout(30000);
httpCon.setDoOutput(true);//打开写入属性
httpCon.setRequestMethod("POST");//设置提交方法

httpCon.connect();//建立连接
InputStream inputStream = httpCon.getInputStream();
InputStreamReader inputReader = new InputStreamReader(inputStream,"utf-8");
BufferedReader bufferReader = new BufferedReader(inputReader);
StringBuffer sb = new StringBuffer();
String inputLine = null;
while ((inputLine = bufferReader.readLine()) != null) {
sb.append(inputLine+"\n");
}
bufferReader.close();
inputReader.close();
inputStream.close();
httpCon.disconnect();
System.out.println(sb.toString().trim());
return sb.toString();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("=======================================================");
return null;
}


以上是源代码,异常信息如下:
java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at sun.net.NetworkClient.doConnect(NetworkClient.java:158)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
at sun.net.www.http.HttpClient.New(HttpClient.java:306)
at sun.net.www.http.HttpClient.New(HttpClient.java:323)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:837)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:778)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:703)
at com.joye.util.UpdateAppData.getWebData(UpdateAppData.java:174)
at com.joye.util.UpdateAppData.getAppDetails(UpdateAppData.java:137)
at com.joye.util.TimerGetData.run(TimerGetData.java:11)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)

求救:这个连接超时的异常,该如何解决呢?
httpCon.setConnectTimeout(30000);
我已经设置了超时重连的时间啊!
...全文
5666 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuxin1128 2012-05-15
  • 打赏
  • 举报
回复
setConnectTimeout();把这个设大一点差不多就OK了吧!
Spring89 2012-04-11
  • 打赏
  • 举报
回复
各位有遇到过连接超时的问题吗?该怎么解决!急.....
Spring89 2012-04-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
try捕捉timeoutexception,然后重新再连呗
[/Quote]

就这方法啊,我要定时更新数据,从别人服务器上获取!这数据有上万条,用这方法合适吗?
beiouwolf 2012-04-10
  • 打赏
  • 举报
回复
try捕捉timeoutexception,然后重新再连呗
Spring89 2012-04-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
什么叫超时重连?你没有做过任何重连的动作啊

httpCon.setConnectTimeout(30000);
这个设置就是,设置如果连接在30秒后还没有连接上就返回timeout异常
[/Quote]
哦,原来是我理解错了啊!那怎样才能超时重连呢?
beiouwolf 2012-04-10
  • 打赏
  • 举报
回复
什么叫超时重连?你没有做过任何重连的动作啊

httpCon.setConnectTimeout(30000);
这个设置就是,设置如果连接在30秒后还没有连接上就返回timeout异常

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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