我正在尝试从远程服务器读取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中获取这个而不试图破解它吗?谢谢!
答案 0 :(得分:1)
使用抛出的Web异常来获取响应,其中包含状态代码:
catch (WebException e)
{
HttpWebResponse response = (HttpWebResponse) e.Response;
responseCode = response.StatusCode;
}
我同意这有点烦人。我不知道告诉HttpWebRequest
只是在不抛出异常的情况下给你回复的方法(留给你自己查看状态代码)。