有人可以帮助清除HttpWebResponse和WebException中“StatusCode”属性的用法吗?
例如,似乎如果:
a)没有异常,那么HttpWebResponse将有一个StatusCode可能有一些值,表明两者: - 成功(例如OK,Accepted etc) - 失败(例如UseProxy,RequestTimeout等)
b)有一个WebExeption throw,它本身有一个响应对象,它还有一个StatusCode(我假设它基于相同的HttpStatusCode枚举。问题1 - 在StatusCode将触发WebException(并且你会在异常中获取细节)方面是否存在任何一致性,相比之下,没有异常会返回,但是你会在响应的StatusCode中找到结果对象
问题2 - 或者更具体地说,尝试处理httpWebRequest.GetResponse调用的pseduo代码(或C#代码本身)是什么,以便您想要区分用户的响应类别:
代理设置/代理问题 =>所以可以告诉用户修改代理设置
连接问题/网络服务器关闭 =>所以用户知道这个
服务器端错误(例如服务器在那里但处理请求时出现问题 - 例如内容不存在) =>所以用户可以通过网站管理员加注
成功案例(我认为这不仅仅是OK) => na(成功案例)
感谢
答案 0 :(得分:4)
根据我的经验,响应状态代码仅返回200或0.其他任何内容都来自WebException,包括代理错误,如407或417.
答案 1 :(得分:4)
只要无法成功执行Web请求,就会抛出WebException。例如400和500系列的回复。
WebExcpetion有一个名为Status的属性,它将返回响应的实际状态,即500(内部服务器错误)。
以下是所有回复代码的列表:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
=============================================== ================================
一般来说:
1xx系列代码=临时响应。这些不是错误代码。例如,100继续响应,告诉客户端应继续其请求。通常,WebRequest不会返回此类响应,并通过发送剩余请求来自行处理。
2xx系列代码=请求已成功接收,理解和接受。这些不是错误代码。例如200 OK
3xx系列代码=需要采取进一步行动。通常这不是错误代码(通常用于重定向),例如'301 Moved Permanently',这意味着正在请求的资源被移动到新位置,因此客户端的任何进一步请求应该在提供的新URL上在回应中。
OR'305使用代理',根据您导致异常。
4xx系列代码=客户端错误。这些可能导致异常。例如'400 Bad Request'或'401 Unauthorized'
5xx系列代码=服务器错误。这些可能导致异常。例如'500内部服务器错误'或'504网关超时'