2012-12-04 5 views
0

웹 페이지의 헤더를 가져 오려고합니다. 아래의 코드 블록은 작업을 수행합니다.
그러나 페이지가 401 거부되면 머리글을 전혀 가져올 수 없습니다. 방법이 있습니까?asp.net을 사용하여 웹 페이지의 헤더를 얻는 방법

감사 200하는 GetResponse() 메소드를 발생 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 (Exception ex) 
     { 
      _response = null; 
     } 
     return statusCode; 
    } 

답변

0

. 상태 코드를 얻으려면이 Exception을 처리하고 Exception에있는 Response에서 StatusCode를 가져와야합니다.

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 헤더를해야합니다 :

는 I've도 WebException이의 경우 응답 코드를 얻을 코드를 변경했습니다.

+0

멋지게 완료되었습니다. Eduardo에게 감사드립니다. – JPL

관련 문제