首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

利用WebRequest判断一个Url是否有效,有答案就结贴解决办法

2012-01-08 
利用WebRequest判断一个Url是否有效,有答案就结贴假如我要判断一个Url是不是存在privateboolUrlIsValid(st

利用WebRequest判断一个Url是否有效,有答案就结贴
假如我要判断一个Url是不是存在

                private   bool   UrlIsValid(string   url)
                {
                        try
                        {
                                HttpWebRequest   myRequest   =   (HttpWebRequest)System.Net.WebRequest.Create(url);
                                myRequest.Method   =   "HEAD ";
                                myRequest.Timeout   =   100;
                                HttpWebResponse   res   =   (HttpWebResponse)myRequest.GetResponse();
                                return   (res.StatusCode   ==   HttpStatusCode.OK);
                        }
                        catch   (WebException   we)
                        {

                                System.Diagnostics.Trace.Write(we.Message);
                                return   false;
                        }
                }


我在调用这个方法时
if   (urlIsValid(this.textBox1.Text))
                        {
                                MessageBox.Show( "有效的链接 ");
                        }
                        else
                        {
                                MessageBox.Show( "无效的链接 ");
                        }

只调用1次或2次,都可以返回值,但到了第3次以后,就得不到任何返回值了。

我查了一下资料,说要用异步方法“BeginGetResponse”和“EndGetResponse”来操作。
但具体怎么写我还是不太清楚,请教各位一下,谢谢~

[解决办法]
查看头里的状态代码 200 400 500
[解决办法]
private void Page_Load(object sender, System.EventArgs e)
{

string url1 = http://dotnet.aspx.cc/;
string url2 = http://dotnet.aspx.cc/Images/logo.gif;
Response.Write( <li> 方法1:);
Response.Write(url1 + 存在: + UrlExistsUsingHttpWebRequest(url1).ToString());
Response.Write( <li> 方法2:);
Response.Write(url1 + 存在: + UrlExistsUsingSockets(url1).ToString());


Response.Write( <li> 方法3:);
Response.Write(url1 + 存在: + UrlExistsUsingXmlHttp(url1).ToString());

Response.Write( <li> 方法1:);
Response.Write(url2 + 存在: + UrlExistsUsingHttpWebRequest(url2).ToString());
Response.Write( <li> 方法3:);
Response.Write(url2 + 存在: + UrlExistsUsingXmlHttp(url2).ToString());
}
private bool UrlExistsUsingHttpWebRequest(string url)
{
try
{
System.Net.HttpWebRequest myRequest =(System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
myRequest.Method = HEAD;
myRequest.Timeout = 100;
System.Net.HttpWebResponse res = (System.Net.HttpWebResponse)myRequest.GetResponse();
return (res.StatusCode == System.Net.HttpStatusCode.OK);
}
catch(System.Net.WebException we)
{
System.Diagnostics.Trace.Write(we.Message);
return false;
}
}
private bool UrlExistsUsingXmlHttp(string url)
{
//注意:此方法需要引用Msxml2.dll
MSXML2.XMLHTTP _xmlhttp = new MSXML2.XMLHTTPClass();
_xmlhttp.open(HEAD,url,false,null,null);
_xmlhttp.send();
return (_xmlhttp.status == 200 );
}

private bool UrlExistsUsingSockets(string url)
{
if(url.StartsWith(http://)) url = url.Remove(0,http://.Length);
try
{
System.Net.IPHostEntry ipHost = System.Net.Dns.Resolve(url);
return true;
}
catch (System.Net.Sockets.SocketException se)
{
System.Diagnostics.Trace.Write(se.Message);
return false;
}
}

热点排行