.net - 当 4xx 响应丢失连接时发出多个 HTTP 请求/响应

标签 .net http rest httpwebrequest tcpclient

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

这行得通,但每次都必须重新创建 TCP/HTTP 连接,代价高昂。我想要做的是获取响应流或具有响应数据的对象,但不会抛出异常,从而允许我在连接上发出另一个请求(通过保持事件状态).这应该减少连接开销,并提高性能。

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

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

最佳答案

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

关于.net - 当 4xx 响应丢失连接时发出多个 HTTP 请求/响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7374617/

相关文章:

java - 提高机器学习休息服务性能

rest - 如何从 Sharepoint Assets 库获取文件名

c# - 这两个比较语句有什么区别?

c# - 使 dataGridView 大小适合行和列的总大小

javascript - 如何在 AngularJS 2.0 中发出 HTTP 请求

php - 如何在php中获取http请求来源

apache mod_proxy ProxyPassReverse Location header

java - 返回未找到方法的错误响应正文 - Spring Rest WebService

c# - .net File.Copy 在复制许多小文件时非常慢(不是通过网络)

c# - 什么是 C# 中的突变?