C#如何从URL获取服务器错误?

时间:2010-10-05 10:41:05

标签: c# url webpage server-error

我们有一个网址,我们需要检查网页是否有效。我们尝试了以下代码: WebResponse objResponse = null;

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

        }

如果无法获得响应,上面的代码会出现异常但即使我们在该页面上出现“服务器错误”也能正常工作?任何帮助如何获得服务器错误?

2 个答案:

答案 0 :(得分: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");
        }

答案 1 :(得分:2)

首先,在响应中使用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
}