如何用程序判断一个友情链接是否已失效(链接对应的网站已不存在)?

时间:2021-05-02 14:55:25
如何用C#实现自动判断链接已失效(链接所指网站已不存在),望高手给出实现代码。

14 个解决方案

#1


没有弄过!
提个思路,调用dos的ping,然后根据结果判断!

#2


不行的,ping对方禁用就会超时
最好是用线程提交一个访问,然后看是否有代码返回,然后再在返回的代码里面判断出(除开网页告诉你访问不成功的那个反馈代码)
一般对方网站403 404 500都说明人家正在调整,但是是能运行着的.看自己的意思了,如果你强调100%能用,既要排除这些403 404 500之类的代码

#3


string m_strHtml;
StreamReader sr = null;
Encoding code = Encoding.GetEncoding("gb2312");
WebRequest httpWebRequest = null;
WebResponse httpWebResponse = null;
httpWebRequest = WebRequest.Create(m_url);
httpWebResponse = httpWebRequest.GetResponse(); //获得流 
sr = new StreamReader(httpWebResponse.GetResponseStream(), code);
m_strHtml = sr.ReadToEnd();

根据m_strHtml判断返回值是否正常。

#4


楼上的,你太勤劳了,我都没有动手,只是说了一个思路,你就做好了
呵呵,pf你哦

#5


对于没有做错误重定向的网站,可以用上述的方法,
但是做了错误重定向的,就没有办法确认了,除非你知道所有链接网站的重定向内容

比如:http://www.microsoft.com/abc.ccc
这个页面是不存在的,而微软就做了一个错误重定向页面

#6


可以考虑用AJAX请求,判断状态。

#7




        try
        {
            WebClient wc = new WebClient();
            Stream db = wc.OpenRead(url);
        }
        catch (Exception ex)
        {
           //出错表示链接错误,做相应的处理
        }

在最上面添加
using System.IO;
using System.Net;

#8


string m_strHtml;
StreamReader sr = null;
Encoding code = Encoding.GetEncoding("gb2312");
WebRequest httpWebRequest = null;
WebResponse httpWebResponse = null;
httpWebRequest = WebRequest.Create(m_url);

httpWebRequest.AllowAutoRedirect=false //是否重定向

httpWebResponse = httpWebRequest.GetResponse(); //获得流 
sr = new StreamReader(httpWebResponse.GetResponseStream(), code);
m_strHtml = sr.ReadToEnd(); 

#9


引用 7 楼 jack20080808 的回复:
C# code

        try
        {
            WebClient wc = new WebClient();
            Stream db = wc.OpenRead(url);
        }
        catch (Exception ex)
        {
           //出错表示链接错误,做相应的处理
        }



在最上面添加 
using System.IO; 
using System.Net;

#10


WebRequest httpWebRequest = null; 
HttpWebResponse httpWebResponse = null; 
httpWebRequest = WebRequest.Create(m_url); 
httpWebResponse =(HttpWebResponse)httpWebRequest.GetResponse(); //获得流
if(httpWebResponse.StatusCode==HttpStatusCode.OK)//即应答代码为200
{
//等效于 HTTP 状态 200。OK 指示请求成功,且请求的信息包含在响应中。这是最常接收的状态代码。 
}
else
{
//链接实效
}

这个最高效,也是最有效的。

#11


to:zhoufoxcn

m_url = new Uri("http://www.hs198.com");
httpWebRequest = WebRequest.Create(m_url); 运行至此报错:无效的 URI: 无法分析主机名。

#12


WebResponse 

#13


to:jack20080808
   方法可行,只是美中不足是在库表遍历每条记录检查链接是有时会报超时错误。(表中有61条记录),能不能把效率再提高点?

#14


速度
我只是看看2012年之前的帖子能否被回复

#1


没有弄过!
提个思路,调用dos的ping,然后根据结果判断!

#2


不行的,ping对方禁用就会超时
最好是用线程提交一个访问,然后看是否有代码返回,然后再在返回的代码里面判断出(除开网页告诉你访问不成功的那个反馈代码)
一般对方网站403 404 500都说明人家正在调整,但是是能运行着的.看自己的意思了,如果你强调100%能用,既要排除这些403 404 500之类的代码

#3


string m_strHtml;
StreamReader sr = null;
Encoding code = Encoding.GetEncoding("gb2312");
WebRequest httpWebRequest = null;
WebResponse httpWebResponse = null;
httpWebRequest = WebRequest.Create(m_url);
httpWebResponse = httpWebRequest.GetResponse(); //获得流 
sr = new StreamReader(httpWebResponse.GetResponseStream(), code);
m_strHtml = sr.ReadToEnd();

根据m_strHtml判断返回值是否正常。

#4


楼上的,你太勤劳了,我都没有动手,只是说了一个思路,你就做好了
呵呵,pf你哦

#5


对于没有做错误重定向的网站,可以用上述的方法,
但是做了错误重定向的,就没有办法确认了,除非你知道所有链接网站的重定向内容

比如:http://www.microsoft.com/abc.ccc
这个页面是不存在的,而微软就做了一个错误重定向页面

#6


可以考虑用AJAX请求,判断状态。

#7




        try
        {
            WebClient wc = new WebClient();
            Stream db = wc.OpenRead(url);
        }
        catch (Exception ex)
        {
           //出错表示链接错误,做相应的处理
        }

在最上面添加
using System.IO;
using System.Net;

#8


string m_strHtml;
StreamReader sr = null;
Encoding code = Encoding.GetEncoding("gb2312");
WebRequest httpWebRequest = null;
WebResponse httpWebResponse = null;
httpWebRequest = WebRequest.Create(m_url);

httpWebRequest.AllowAutoRedirect=false //是否重定向

httpWebResponse = httpWebRequest.GetResponse(); //获得流 
sr = new StreamReader(httpWebResponse.GetResponseStream(), code);
m_strHtml = sr.ReadToEnd(); 

#9


引用 7 楼 jack20080808 的回复:
C# code

        try
        {
            WebClient wc = new WebClient();
            Stream db = wc.OpenRead(url);
        }
        catch (Exception ex)
        {
           //出错表示链接错误,做相应的处理
        }



在最上面添加 
using System.IO; 
using System.Net;

#10


WebRequest httpWebRequest = null; 
HttpWebResponse httpWebResponse = null; 
httpWebRequest = WebRequest.Create(m_url); 
httpWebResponse =(HttpWebResponse)httpWebRequest.GetResponse(); //获得流
if(httpWebResponse.StatusCode==HttpStatusCode.OK)//即应答代码为200
{
//等效于 HTTP 状态 200。OK 指示请求成功,且请求的信息包含在响应中。这是最常接收的状态代码。 
}
else
{
//链接实效
}

这个最高效,也是最有效的。

#11


to:zhoufoxcn

m_url = new Uri("http://www.hs198.com");
httpWebRequest = WebRequest.Create(m_url); 运行至此报错:无效的 URI: 无法分析主机名。

#12


WebResponse 

#13


to:jack20080808
   方法可行,只是美中不足是在库表遍历每条记录检查链接是有时会报超时错误。(表中有61条记录),能不能把效率再提高点?

#14


速度
我只是看看2012年之前的帖子能否被回复