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

时间:2018-01-23 05:38:54

标签: c# httpwebrequest webexception

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

我看到this question,但答案并不确定。

1 个答案:

答案 0 :(得分:1)

不,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,请使用异常的Response和Status属性来确定服务器的响应。

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