如果服务器返回 200 以外的任何内容,HttpWebRequest.GetResponse() 是否总是抛出 WebE



如果服务器返回 200 以外的任何内容,HttpWebRequest.GetResponse() 是否总是抛出 WebException?

我看到了这个问题,但答案不是决定性的。

不,WebException 只会在某些条件下抛出,主要是因为处理请求时超时和错误。

以下是 HttpWebRequest.GetResponse() 的文档:

https://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.getresponse(v=vs.110).aspx

请注意,引发 WebException 的主要原因有三个:

Abort was previously called.
-or-
The time-out period for the request expired.
-or-
An error occurred while processing the request.

底部的两个是最常见的,您最常看到这些中的 400 个。在文档中,他们有一个很好的建议,您可以使用该建议来尝试诊断问题的确切原因:

如果引发 WebException,请使用异常的"响应"和"状态"属性来确定来自服务器的响应。

如果您使用的是可以放置断点的 IDE(Visual Studio),请检查响应和状态。如果没有,请使用 Console.Writeline() 打印出响应或状态代码,然后从那里开始调查。

最新更新