4

URL があり、Web ページがアクティブかどうかを確認する必要があります。次のコードを試しました: WebResponse objResponse = null;

        WebRequest objRequest = HttpWebRequest.Create(URL);
        objRequest.Method = "HEAD";
        try
        {
            objResponse = objRequest.GetResponse();
            objResponse.Close();                
        }
        catch (Exception ex)
        {

        }

上記のコードは、応答を取得できない場合に例外を発生させましたが、そのページに「サーバー エラー」があっても正常に動作しますか? サーバーエラーを取得する方法はありますか?

4

2 に答える 2

5

HttpResponseクラスには、確認StatusCodeできるプロパティがあります。200なら大丈夫です。

コードを次のように変更できます。

        HttpWebResponse objResponse = null;
        var objRequest = HttpWebRequest.Create("http://google.com"); 
        objResponse = (HttpWebResponse) objRequest.GetResponse();
        if(objResponse.StatusCode != HttpStatusCode.OK)
        {
            Console.WriteLine("It failed");
        }else{
            Console.WriteLine("It worked");
        }
于 2010-10-05T10:44:15.077 に答える
2

一つusingには、応答にステートメントを使用します-そうすれば、何が起こってもそれを処分します。

これで、aWebExceptionがスローされた場合、それをキャッチしWebException.Responseて、ステータスコードと返送されたデータを確認できます。

WebRequest request = WebRequest.Create(URL);
request.Method = "HEAD";
try
{
    using (WebResponse response = request.GetResponse())
    {
        // Use data for success case
    }
}
catch (WebException ex)
{
    HttpWebResponse errorResponse = (HttpWebResponse) ex.Response;
    HttpStatusCode status = errorResponse.StatusCode;
    // etc
}
于 2010-10-05T10:46:33.543 に答える