如果服务器返回200以外的任何内容,HttpWebRequest.GetResponse()是否总是抛出WebException?
我看到this question,但答案并不确定。
答案 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()打印出响应或状态代码,然后从那里开始调查。