C# HTTP状态为“不正常”时ASP.NET获取Web响应
在响应状态代码不是200 OK的情况下,我需要从HTTP GET读取响应。有时是401,有时是403,但是会有一个响应内容。如果我尝试使用HttpWebResponse和HttpWebRequest类,当响应状态为not OK时,它会抛出一个异常。有什么建议吗?除非catch中的C# HTTP状态为“不正常”时ASP.NET获取Web响应,c#,.net,asp.net,http,httpwebrequest,C#,.net,Asp.net,Http,Httpwebrequest,在响应状态代码不是200 OK的情况下,我需要从HTTP GET读取响应。有时是401,有时是403,但是会有一个响应内容。如果我尝试使用HttpWebResponse和HttpWebRequest类,当响应状态为not OK时,它会抛出一个异常。有什么建议吗?除非catch中的response是空的,就像对我一样,然后它抛出另一个异常,完全没有用。。。不过,我当时正在测试一台故意断开连接的服务器。我的例外“无法连接到远程服务器”对我来说已经足够好了。但是,是的,通常情况下,状态代码和其他问题的
response
是空的,就像对我一样,然后它抛出另一个异常,完全没有用。。。不过,我当时正在测试一台故意断开连接的服务器。我的例外“无法连接到远程服务器”对我来说已经足够好了。但是,是的,通常情况下,状态代码和其他问题的详细信息都会有例外。我对这段代码的建议-只需处理null响应
-可能返回e.ToString()对于这种情况,code>就足够了。下次——添加一个request.Credentials=CredentialCache.DefaultCredentials代码>作为此代码的第二行!!我不断收到(401)未经授权的
错误,无法找出原因,因为我正在调用一个添加了该行的web服务,然后我正在尝试此代码!我也要对这个人这么做!而此代码不会传递401
,它会为状态代码显示未经授权的
。
var request = (HttpWebRequest)WebRequest.Create("http://stackoverflow.com/1");
try
{
using (WebResponse response = request.GetResponse())
{
// Success
}
}
catch (WebException e)
{
using (WebResponse response = e.Response)
{
HttpWebResponse httpResponse = (HttpWebResponse)response;
Console.WriteLine("Error code: {0}", httpResponse.StatusCode);
using (var streamReader = new StreamReader(response.GetResponseStream()))
Console.WriteLine(streamReader.ReadToEnd());
}
}