url访问超时

lfrhate 2015-01-16 04:00:45
我用java.net.url类通过url批量访问网页,但是老是在运行一段时间就会超时一次,关于设置超时我也会:
URLConnection urlconn = url.openConnection();
urlconn.setConnectTimeout(30000);// 设置连接时间
urlconn.setReadTimeout(30000);// 设置超时时间

我想问一下,当我超时的时候有没有办法把这条超时的url提取出来!我应该怎么去判断!
...全文
382 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangtu 2015-01-22
  • 打赏
  • 举报
回复
超时是避免不了的,用http的连接池可以降低概率。
lfrhate 2015-01-20
  • 打赏
  • 举报
回复
引用 1 楼 chouy 的回复:
[quote=引用 楼主 lfrhate 的回复:] 我想问一下,当我超时的时候有没有办法把这条超时的url提取出来!我应该怎么去判断!
哪个超时了,URL你不是知道吗?还要怎么提取?[/quote] 因为我做的是循环,超时的话不是固定的某一个超时,而是运行一段时间之后才会出现,而且是随机的!
lfrhate 2015-01-20
  • 打赏
  • 举报
回复
引用 3 楼 liangtu33 的回复:
很正常,一般是资源没释放造成的!!!
我也感觉也是,但是我不知道怎么释放资源 ArrayList<ConnectionBaseDao> cb = new ArrayList<ConnectionBaseDao>(); ConnectionBaseDao soft = null; for (int i = 0; i < allUrlList.size(); i++) { StringBuffer sb_url2 = new StringBuffer(); try { URL u2 = new URL(allUrlList.get(i)); URLConnection urlconn = u2.openConnection(); urlconn.setConnectTimeout(30000);// 设置连接超时时间 urlconn.setReadTimeout(30000);// 设置访问超时时间 BufferedReader br = new BufferedReader(new InputStreamReader( urlconn.getInputStream())); if(br.readLine()==null){ continue; } String str = ""; while ((str = br.readLine()) != null) { sb_url2.append(str); } 我需要访问多个url,所以做了个循环!
lfrhate 2015-01-20
  • 打赏
  • 举报
回复
引用 2 楼 w405112941 的回复:
通过返回的状态码呢?
java.net.ConnectException: Connection timed out: connect at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) at java.net.AbstractPlainSocketImpl.connect(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at sun.net.NetworkClient.doConnect(Unknown Source) at sun.net.www.http.HttpClient.openServer(Unknown Source) at sun.net.www.http.HttpClient.openServer(Unknown Source) at sun.net.www.http.HttpClient.<init>(Unknown Source) at sun.net.www.http.HttpClient.New(Unknown Source) at sun.net.www.http.HttpClient.New(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) at approbot.GetDetails.getInfo(GetDetails.java:34) at approbot.Get2Url.url_read_second(Get2Url.java:104) at approbot.Get2Url.main(Get2Url.java:111)
liangtu 2015-01-17
  • 打赏
  • 举报
回复
很正常,一般是资源没释放造成的!!!
The_end90 2015-01-16
  • 打赏
  • 举报
回复
通过返回的状态码呢?
商科程序员 2015-01-16
  • 打赏
  • 举报
回复
引用 楼主 lfrhate 的回复:
我想问一下,当我超时的时候有没有办法把这条超时的url提取出来!我应该怎么去判断!
哪个超时了,URL你不是知道吗?还要怎么提取?

67,515

社区成员

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

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