【问题标题】:Does HttpWebRequest.GetResponse() always throw a WebException if anything other than 200 is returned by the server?如果服务器返回的不是 200,HttpWebRequest.GetResponse() 是否总是抛出 WebException?
【发布时间】:2018-01-23 05:38:53
【问题描述】:

如果服务器返回的不是 200,HttpWebRequest.GetResponse() 是否总是抛出 WebException?

我看到了this question,但答案不是决定性的。

【问题讨论】:

  • 该方法记录了什么?

标签: c# httpwebrequest webexception


【解决方案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() 打印出响应或状态代码并从那里开始调查。

【讨论】:

  • 谢谢。我昨天在研究时看到“处理请求时发生错误”,但不确定它到底意味着什么。 statusCode != 200 是否等同于说“处理请求时发生错误。”。或者是否存在此方法认为错误的一系列 http 状态代码?
猜你喜欢
  • 2021-12-18
  • 1970-01-01
  • 1970-01-01
  • 2017-03-13
  • 1970-01-01
  • 2019-06-29
  • 1970-01-01
  • 1970-01-01
  • 2022-10-04
相关资源
最近更新 更多