2012-12-04 19 views
0

我正在嘗試獲取網頁的標題。下面的代碼塊可以完成這項工作。
但是,當頁面被401拒絕時,我根本無法獲得任何標題。有沒有辦法?如何使用asp.net獲取網頁的標題

由於

public Int32 CheckURLStatus(string uri, out HttpWebResponse _response) 
    { 
     //Get response header 
     _response = null; 
     ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; 
     HttpWebRequest _request = (HttpWebRequest)WebRequest.Create(uri); 
     _request.Method = "GET"; 
     _request.AllowAutoRedirect = true; 
     _request.Accept = "*/*"; 
     _request.MaximumAutomaticRedirections = 4; 
     _request.UseDefaultCredentials = true; 
     _request.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; 
     Int32 statusCode = 404; 
     try 
     { 
      _response = (HttpWebResponse)_request.GetResponse(); 
      statusCode = Convert.ToInt32(_response.StatusCode); 
     } 
     catch (Exception ex) 
     { 
      _response = null; 
     } 
     return statusCode; 
    } 

回答

0

在任何的StatusCode不是200的GetResponse()方法會引發WebException的情況下。要獲取狀態碼,您必須處理此異常,並從異常中的響應中獲取狀態碼。

從來就改變了你的代碼來獲取響應代碼,即使在引發WebException的情況下:

public Int32 CheckURLStatus(string uri, out HttpWebResponse _response) 
    { 
     //Get response header 
     _response = null; 
     ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; 
     HttpWebRequest _request = (HttpWebRequest)WebRequest.Create(uri); 
     _request.Method = "GET"; 
     _request.AllowAutoRedirect = true; 
     _request.Accept = "*/*"; 
     _request.MaximumAutomaticRedirections = 4; 
     _request.UseDefaultCredentials = true; 
     _request.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; 
     Int32 statusCode = 404; 
     try 
     { 
      _response = (HttpWebResponse)_request.GetResponse(); 
      statusCode = Convert.ToInt32(_response.StatusCode); 
     } 
     catch (WebException ex) 
     { 
      statusCode = Convert.ToInt32(((HttpWebResponse)ex.Response).StatusCode); 
      _response = null; 
     } 
     return statusCode; 
    } 

你也可以檢查ex.Response.Headers,你將有響應的HTTP標頭。

+0

很好地完成。謝謝愛德華多。 – JPL

相關問題