C # Как я могу получить ошибку сервера из URL? - PullRequest
4 голосов
/ 05 октября 2010

У нас есть URL, и мы должны проверить, активна ли веб-страница или нет. Мы попробовали следующий код: WebResponse objResponse = null;

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

        }

Приведенный выше код выдал исключение, если не смог получить ответ, но также работает нормально, даже если у нас есть «ошибка сервера» на этой странице? Любая помощь, как получить ошибку сервера?

Ответы [ 2 ]

5 голосов
/ 05 октября 2010

Класс 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");
        }
2 голосов
/ 05 октября 2010

Во-первых, используйте оператор using в ответе - таким образом вы будете распоряжаться им независимо от того, что произойдет.

Теперь, если выброшено WebException, вы можете поймать это и посмотреть на 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
}
...