当4xx响应失去连接时,发出多个HTTP请求/响应

时间:2011-09-10 20:48:52

标签: .net http rest httpwebrequest tcpclient

我正在使用REST API的客户端。服务器当然会返回4xx响应。目前,我正在使用HttpWebRequest / HttpWebResponse进行调用。问题是HttpWebRequest在4xx(和5xx)代码上引发异常。我正在捕获异常,然后(通常)基于4xx消息中的数据发送另一个请求(例如,尝试POST,然后在失败时使用MERGE)。

这样可行,但每次重新创建TCP / HTTP连接都很昂贵。我希望能够做的是获取具有响应数据的响应流或对象,但抛出异常,允许我在连接上发出另一个请求(通过keep-alive )。这应该减少连接开销,并提高性能。

我看过的一种方法是直接使用TcpClient,但这很令人头疼,因为我必须编写代码来支持分块数据,编码,代理等等。我希望避免这种情况。

有没有办法使用System.Net HTTP客户端阻止WebExceptions?如果没有,还有其他选择(希望开源)吗?任何建议都非常受欢迎。

1 个答案:

答案 0 :(得分:2)

不确定为什么您的HTTP连接会因异常而关闭,但是,如果您使用此处的{HttpClient http://nuget.org/List/Packages/HttpClient,它不会在400上引发异常。