检测远程URL是否存在的三种方法

时间:2022-11-23 19:32:20
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
  }
}

转自:http://www.cnblogs.com/soonfly/archive/2009/03/22/1419309.html