繁体   English   中英

哪些特定的状态代码会导致HttpWebRequest.GetResponse()抛出WebException?

[英]Which specific status codes cause a WebException to be thrown by HttpWebRequest.GetResponse()?

我已经在寻找一些关于此的明确文件,但没有找到任何运气。

对于哪些HTTP响应状态代码, HttpWebRequest.GetResponse()在执行类似POST的WebException后会生成WebException

具体来说,它WebException为状态200 OK以外的任何其他内容生成WebException 或者它只会生成一个WebException ,例如WebException和500(为了参数)?

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

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

任何与文档相关的链接都将非常受欢迎。

在响应和捕获并检查WebExceptions之后结束执行显式检查; 导致一些重复的代码,但如果状态为非200,是否总是会发生WebException没有确定的答案。

我认为它会,但这听起来像是一个冒险的假设。 首先, MSDN文档清楚地表明GetResponse将抛出除WebException之外的异常。 但是,我可以从经验中明确地说,“304 Not-Modified”响应将作为WebException抛出。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM