10

我已经四处寻找有关此的一些权威文档,但没有太多运气找到任何文档。

在执行 POST 之类的操作后,哪些 HTTP 响应状态代码会HttpWebRequest.GetResponse()生成?WebException

WebException具体来说,它会为除 status 之外的任何内容生成 a200 OK吗?或者它只会生成WebException400、404 和 500 (为了争论)?

我想知道,因为与我通信的服务器定义了除了HTTP 200 OK作为错误条件返回之外的任何内容。我可以依赖WebException生成 200 以外的任何东西吗?

我目前已经编写了代码来每次检查返回状态代码并确保它是200 OK. 如果不是,它会采取适当的行动——但是在那个代码和WebException我希望清理的 catch 块之间有很多重复。

任何相关的文档链接将不胜感激。

4

3 回答 3

2

最终在响应和捕获并检查 WebExceptions 之后进行了显式检查;导致一些重复的代码,但是如果状态不是 200,WebException 是否总是会发生没有明确的答案。

于 2010-06-01T18:26:59.400 回答
1

我认为它会,但这听起来像是一个冒险的假设。一方面,MSDN 文档明确表示GetResponse会抛出异常,而不仅仅是WebException. 但是,我可以根据经验肯定地说,“304 Not-Modified”响应将作为WebException.

所有这些谈话都散发出一股奇怪的代码气味。不要使用异常来控制执行流程。您最好适当地处理异常,然后显式检查该StatusCode属性的允许值。

于 2010-06-01T12:35:59.963 回答
0

WebException 系统是独立HTTP 错误系统的系统。这主要是因为 HTTP 错误是由浏览器或客户端返回的,而 WebException 是由服务器在构建页面时抛出的。当发现 HTTP 错误时,页面被发送到客户端,而您不会知道它。

于 2010-06-01T12:03:09.263 回答