2009-04-16 9 views
2

ページのステータス(404、移動済みなど)を確認したいと考えています。どうすればいいですか? ATM私は、ページが存在するかどうかを私に知らせる以下のことをしています。また、私はHttpWebResponseのクラスはHttpStatusCode列挙型の値を返すのStatusCodeプロパティを公開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

(私はそれをテストした)例外は私のコードが遅くなっている疑いがあります。エラーではない場合、これは直接404(404が見つかりません、403が許可されていない、301が永久に移動した、200のOKなど)のステータスコードを表示します。エラーの場合、WebExceptionクラスは、別の列挙型から取得したStatusプロパティを公開しますが、あなたが思っていたものから必要なケースを識別することができます。

+0

私はあなたの言ってtheresのにときにその403分の404 /などの例外を持つO/Wページのステータスを取得する方法を考えていません。私はこれを念頭に置いておきます。 –

+0

はい、これらのエラー状態のいずれかの動作は、WebExceptionをスローすることです。 –

1

あなたは、このようなHTTPエラーコードを取得することができます。

catch (System.Net.WebException e) 
{ 
    int HttpStatusCode = (int)((HttpWebResponse)e.Response).StatusCode; 
} 
関連する問題