检测远程URL是否存在的三种方法
来自:
http://blog.csdn.net/net_lover/archive/2005/11/30/540417.aspx private void Page_Load(object sender, System.EventArgs e)
private void Page_Load(object sender, System.EventArgs e)
 {
{

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

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

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




 //Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=540417
//Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=540417

 
http://blog.csdn.net/net_lover/archive/2005/11/30/540417.aspx
本文用3种方法检测远程URL是否存在。
 private void Page_Load(object sender, System.EventArgs e)
private void Page_Load(object sender, System.EventArgs e) {
{
 string url1 = "http://dotnet.aspx.cc/";
 string url1 = "http://dotnet.aspx.cc/"; string url2 = "http://dotnet.aspx.cc/Images/logo.gif";
 string url2 = "http://dotnet.aspx.cc/Images/logo.gif"; Response.Write("<li>方法1:");
 Response.Write("<li>方法1:"); Response.Write(url1 + " 存在:" + UrlExistsUsingHttpWebRequest(url1).ToString());
 Response.Write(url1 + " 存在:" + UrlExistsUsingHttpWebRequest(url1).ToString()); Response.Write("<li>方法2:");
 Response.Write("<li>方法2:"); Response.Write(url1 + " 存在:" + UrlExistsUsingSockets(url1).ToString());
 Response.Write(url1 + " 存在:" + UrlExistsUsingSockets(url1).ToString());    Response.Write("<li>方法3:");
 Response.Write("<li>方法3:"); Response.Write(url1 + " 存在:" + UrlExistsUsingXmlHttp(url1).ToString());
 Response.Write(url1 + " 存在:" + UrlExistsUsingXmlHttp(url1).ToString());
 Response.Write("<li>方法1:");
 Response.Write("<li>方法1:"); Response.Write(url2 + " 存在:" + UrlExistsUsingHttpWebRequest(url2).ToString());
 Response.Write(url2 + " 存在:" + UrlExistsUsingHttpWebRequest(url2).ToString()); Response.Write("<li>方法3:");
 Response.Write("<li>方法3:"); Response.Write(url2 + " 存在:" + UrlExistsUsingXmlHttp(url2).ToString());
 Response.Write(url2 + " 存在:" + UrlExistsUsingXmlHttp(url2).ToString()); }
} private bool UrlExistsUsingHttpWebRequest(string url)
private bool UrlExistsUsingHttpWebRequest(string url) {
{ try
 try {
 { System.Net.HttpWebRequest myRequest =(System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
  System.Net.HttpWebRequest myRequest =(System.Net.HttpWebRequest)System.Net.WebRequest.Create(url); myRequest.Method = "HEAD";
  myRequest.Method = "HEAD";  myRequest.Timeout = 100;
  myRequest.Timeout = 100; System.Net.HttpWebResponse res = (System.Net.HttpWebResponse)myRequest.GetResponse();
  System.Net.HttpWebResponse res = (System.Net.HttpWebResponse)myRequest.GetResponse(); return (res.StatusCode == System.Net.HttpStatusCode.OK);
  return (res.StatusCode == System.Net.HttpStatusCode.OK); }
 } catch(System.Net.WebException we)
 catch(System.Net.WebException we) {
 { System.Diagnostics.Trace.Write(we.Message);
  System.Diagnostics.Trace.Write(we.Message); return false;
  return false; }
 } }
} private bool UrlExistsUsingXmlHttp(string url)
private bool UrlExistsUsingXmlHttp(string url) {
{  //注意:此方法需要引用Msxml2.dll
 //注意:此方法需要引用Msxml2.dll MSXML2.XMLHTTP _xmlhttp = new MSXML2.XMLHTTPClass();
 MSXML2.XMLHTTP _xmlhttp = new MSXML2.XMLHTTPClass(); _xmlhttp.open("HEAD",url,false,null,null);
 _xmlhttp.open("HEAD",url,false,null,null); _xmlhttp.send("");
 _xmlhttp.send(""); return (_xmlhttp.status == 200 );
 return (_xmlhttp.status == 200 ); }
}
 private bool UrlExistsUsingSockets(string url)
private bool UrlExistsUsingSockets(string url) {
{ if(url.StartsWith("http://")) url = url.Remove(0,"http://".Length);
 if(url.StartsWith("http://")) url = url.Remove(0,"http://".Length); try
 try  {
 { System.Net.IPHostEntry ipHost = System.Net.Dns.Resolve(url);
  System.Net.IPHostEntry ipHost = System.Net.Dns.Resolve(url); return true;
  return true; }
 } catch (System.Net.Sockets.SocketException se)
 catch (System.Net.Sockets.SocketException se)  {
 { System.Diagnostics.Trace.Write(se.Message);
  System.Diagnostics.Trace.Write(se.Message); return false;
  return false; }
 } }
}



 //Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=540417
//Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=540417

 
                    
                

 
  
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号