2009-04-16 6 views
2

페이지 상태 (404, 이동 등)를 확인하고 싶습니다. 내가 어떻게 해? ATM 나는 페이지가 존재하는지 아닌지 만 알려주는 아래를하고있다. 또한, 나는 예외가 (내가 그것을 테스트)WebRequest 예외가 없으면 페이지가 표시됩니까?

static public bool CheckExist(string url) 
     { 
      HttpWebRequest wreq = null; 
      HttpWebResponse wresp = null; 
      bool ret = false; 

      try 
      { 
       wreq = (HttpWebRequest)WebRequest.Create(url); 
       wreq.KeepAlive = true; 
       //wreq.Method = "HEAD"; 
       wresp = (HttpWebResponse)wreq.GetResponse(); 
       ret = true; 
      } 
      catch (System.Net.WebException) 
      { 
      } 
      finally 
      { 
       if (wresp != null) 
        wresp.Close(); 
      } 
      return ret; 
     } 

답변

1

HttpWebResponse 클래스 클래스는 HttpStatusCode 열거에서 값을 반환하는 상태 코드 속성을 노출 내 코드가 느린하고있다 생각한다. 오류가 아닌 경우이 코드는 상태 코드 (404를 찾을 수 없음, 403 권한이 없음, 301 영구적으로 이동됨, 200 OK 등)를 직접 제공합니다. 오류 케이스에서 WebException 클래스는 다른 enum에서 가져온 Status 속성을 노출하지만 생각한 것에서 원하는 케이스를 식별 할 수 있습니다.

+0

나는 당신의 말을 프로그래머에게 때 그 403분의 404/등 예외를 가지는하여 w/o 페이지의 상태를 얻을 수있는 방법을 생각하지 않습니다. 나는 이것을 명심해야한다. –

+0

예, 이러한 "오류가있는"HTTP 상태 중 하나에 대한 동작은 WebException을 throw하는 것입니다. –

1

는이 같은 HTTP 오류 코드를 얻을 수 있습니다

catch (System.Net.WebException e) 
{ 
    int HttpStatusCode = (int)((HttpWebResponse)e.Response).StatusCode; 
} 
관련 문제