2012-01-19 16 views
2

私は、Webサイトからステータスコードを返す簡単なプログラムを作成しようとしています。現在、HttpWebRequestクラスとHttpWebResponseクラスを使用しています。しかし、彼らが動作する方法はちょうど私にとっては恐ろしいようですが、200/OKと他のすべてのコードがWebExceptionを返す場合にのみステータスコードが返されます。WebResponse/HttpWebResponseの代替方法

私は例外からの応答を読み取ってステータスコードを得ることができますが、例外を発生させない他の選択肢があるかどうかは疑問でした。私が理解しているように、例外は高価であり、重大な問題がある場合にはまれなケースのために予約する必要があります。私のアプリケーションでは重要ではありませんが、絶対に必要でない限り、例外を避けたいと思います。

その他のオプションはありますか?

は編集:

は、ここでの例外は高価ですが、彼らはWeb要求よりもコスト10の多くの力があるいくつかのコード

HttpWebRequest request = (HttpWebRequest) HttpWebRequest.Create("http://www.randomsite.com"); 
      request.Method = "HEAD"; 
      try 
      { 
       HttpWebResponse response = (HttpWebResponse) request.GetResponse(); 
       Console.WriteLine("Status: " + response.StatusCode); 

       response.Close(); 
      } 
      catch (WebException ex) 
      { 
       HttpWebResponse httpResponse = (HttpWebResponse) ex.Response; 
       if (httpResponse != null) 
       { 
        Console.WriteLine("Status: " + httpResponse.StatusCode); 
       } 
      } 
+1

コードはどこですか?例外は何ですか? –

+0

「例外があると分かりますが、費用がかかり、重大な問題が発生した場合はまれにしか予約しないでください。」この「理解」は正確にどこにありましたか? –

+2

@BrianDriscoll例外やコストについて議論する場所はどこにでもあります。 – Zen

答えて

3

です。だからちょうどHttpWebResponseをラップしてステータスコードを返し、コストを忘れる。

0

ウェブサイトからステータスコードを返す簡単なプログラムを作成しようとしています。

ステータスは何ですか?アプリケーションが実行されているかどうかを把握したいだけですか? HttpWebResponse.StatusCodeは、サイトのステータスではなく、レスポンスのステータスを返します。 200以外のものを返すと、何らかの理由でリクエストが無効であったり、処理できなかったりしているということになります。

私はこのケースではパフォーマンスについて心配するべきではないことに同意しますが、間違ったツリーを吠えている気がします。

+0

私はウェブサイトのURLへのリクエストを作成し、レスポンスを取得し、レスポンスのステータスコードをチェックして、ウェブサイトがok、404、リダイレクトなど何かを確認しています。これははっきりしていたと思った。 – Zen

+0

申し訳ありませんが、私は誤解しました。あなたのコメントと追加されたコードの例はあなたの意図を明確にします。 'WebException'を含まない別の方法がある場合は、別の答えに投稿します。 – pseudocoder

関連する問題