远程服务器抛出内部错误时读取HttpStatusCode

时间:2010-09-22 08:20:45

标签: .net httpwebrequest

我正在尝试从远程服务器读取HTTP响应代码,但在抛出内部服务器错误时遇到了一些麻烦。在以下代码中,GetResponse()可以在远程计算机返回错误时抛出WebException。我目前正在捕获错误,并假设它是一个HttpStatusCode.InternalServerError,但这通常是不正确的。

var req = (HttpWebRequest)WebRequest.Create(uri);
HttpStatusCode responseCode;
try
{
  using (var resp = (HttpWebResponse)req.GetResponse())
  {
    responseCode = resp.StatusCode;
  }
}
catch (WebException)
{
  responseCode = HttpStatusCode.InternalServerError;
}

所以问题是:无论远程服务器抛出什么错误,我如何才能获取远程响应代码?我需要知道它是哪种错误类型;有什么方法可以从HttpWebResponse中获取这个而不试图破解它吗?谢谢!

1 个答案:

答案 0 :(得分:1)

使用抛出的Web异常来获取响应,其中包含状态代码:

catch (WebException e)
{
    HttpWebResponse response = (HttpWebResponse) e.Response;
    responseCode = response.StatusCode;
}

我同意这有点烦人。我不知道告诉HttpWebRequest只是在不抛出异常的情况下给你回复的方法(留给你自己查看状态代码)。