如何最有效的判断一个链接是否有效??

c99100 2007-08-14 01:08:15
如果偏重于效率方面分析,最有效的判断一个url是否可以正常浏览的方法是什么?(正常浏览即可以正常打开,有效的链接)java.net中几个方法都可以正确判断,但是不知道那种方式 判断最有效。
...全文
481 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
c99100 2007-08-31
  • 打赏
  • 举报
回复
您说的这个url路径是什么意思? 返回的 url路径?页面的物理路径?
joejoe1991 2007-08-26
  • 打赏
  • 举报
回复
to:joejoe1991() 抓取源码来判断确实可以分别出来,但是一来无任何效率可言,二来不具有通用性了.
================================================================
这是我唯一想到的方法,。程序又不长眼 也看不见返回的页面是什么样子的啊。

不知道有没有什么方法可以得到返回时的url的路径啊
c99100 2007-08-26
  • 打赏
  • 举报
回复
to:joejoe1991() 抓取源码来判断确实可以分别出来,但是一来无任何效率可言,二来不具有通用性了.
zhangchao0323 2007-08-25
  • 打赏
  • 举报
回复
学习学习
  • 打赏
  • 举报
回复
问题是大多数的网站都捕获了 404 错误,也有错误页面返回的,返回码也是 200 的,就是这点比较讨厌,再研究一下。
doctormoney 2007-08-24
  • 打赏
  • 举报
回复
还是获得200的返回值最可靠
joejoe1991 2007-08-24
  • 打赏
  • 举报
回复
抓一大把网页的源码 进行比较 如果基本上都差不多 那就当这些全是不可访问的页面算了
嘎嘎
shortppsy 2007-08-23
  • 打赏
  • 举报
回复
URL url = null;
String urlTmp=textField.getText();
try {
url = new URL(urlTmp);
InputStream in = url.openStream();
label.setText("连接正常");
in.close();
}
catch (IOException ee) {
label.setForeground(Color.red);
label.setText("无法连接到"+url.toString());
}
liuxinhongxin 2007-08-23
  • 打赏
  • 举报
回复
java多线程还是不错的,你尝试一下就是了.看看效果如何?
c99100 2007-08-23
  • 打赏
  • 举报
回复
joejoe1991() 跟bao110908(长牙了,好痛)实现的方法是也一样的,两位说这里有必要用多线程来处理吗?那样会不会提高些速度?如果较真点比较的话。
c99100 2007-08-23
  • 打赏
  • 举报
回复
对不起各位,这几天本本中了病毒,所有方法都试验过无效,最后重新分区重装了系统。刚刚开始起步尽量早点回到正轨。楼上说的确实是我后来发现的一个问题,而且多数网站对不存在也就是类似404这种错误都做了处理,返回的页面也是200的,那这种方法实际就没有检测出来,也就是说,这种做了处理的是没有办法有效辨别的对吗?(当然,可以通过分析源代码的办法,但这种并不通用了)
  • 打赏
  • 举报
回复
String urls = "http://community.csdn.net/Expert/TopicView3.asp?id=5708230";
URL url = new URL(urls);
HttpURLConnection http = (HttpURLConnection) url.openConnection(); if (http.getResponseCode() == 200) {
  // 有效
}else{
  // 无效
}

这个方法有不足之处,就是当网页上已处理了 404 错误时,也会返回 200 的。
sureyor 2007-08-14
  • 打赏
  • 举报
回复
HTTP服务器状态代码定义(Status Code Definitions)
1**----消息类
该类状态代码用于表示临时回应。

2**----成功类
表示客户端请求被成功接收、理解、接受。
例如:200---OK 表示请求成功。

3**----重定向类
该类状态码表示用户代理要想完成请求,还需要发出进一步的操作。
例如:302---Moved Temporarily 请求到的资源在一个不同的URL处临时保存。因为重定向有时会被更改,客户端应继续用请求URI来发出以后的请求。
304---Not Modified 如果客户端成功执行了条件GET请求,而对应文件自If-Modified-Since域所指定的日期以来就没有更新过,服务器应当回应此状态码,而不是将实体主体发送给客户端。

4**----客户端错误类
例如:404---Not Found 服务器没有找到与请求URI相符的资源。404状态码并不指明状况是临时性的还是永久性的。

5**----服务器错误类
例如:500---Internal Server Error 服务器碰到了意外情况,使其无法继续回应请求。(最常见吧)
twjava 2007-08-14
  • 打赏
  • 举报
回复
没有200返回,如果返回的是404怎么办?只有response可能还是有问题的。
mouseshuai 2007-08-14
  • 打赏
  • 举报
回复
什么意思?
没有看懂。。。。。。
zdjray 2007-08-14
  • 打赏
  • 举报
回复
有response就可以了
twjava 2007-08-14
  • 打赏
  • 举报
回复
还是要获取他,得到200的状态,才能认为是有效的。
混沌骑士 2007-08-14
  • 打赏
  • 举报
回复
ping 它 不一定可以啊
liuzi123 2007-08-14
  • 打赏
  • 举报
回复
接分中,学习
joejoe1991 2007-08-14
  • 打赏
  • 举报
回复
package test;

import java.net.*;

public class riqi {
public static void main(String[] args) {
try {
URL url=new URL("http://www.aaa.com");
URLConnection conn=url.openConnection();


String str=conn.getHeaderField(0);
if (str.indexOf("OK")>0)
{
System.out.println("正常!");
}else{
System.out.println("不能游览");
}


} catch (Exception ex) {

}
}
}


把www.aaa.com换成baidu试试

62,623

社区成员

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

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