.net 使用Expect:100时处理失败继续使用HttpClient
我感兴趣的是优化调用RESTAPI的客户端的行为。在这个API中,一个特定的POST操作允许包含一个.net 使用Expect:100时处理失败继续使用HttpClient,.net,dotnet-httpclient,http-status-code-100,http-status-code-412,.net,Dotnet Httpclient,Http Status Code 100,Http Status Code 412,我感兴趣的是优化调用RESTAPI的客户端的行为。在这个API中,一个特定的POST操作允许包含一个如果不匹配:头,如果系统中已经存在要上传的项目,这将导致服务器报告HTTP 412响应。与Expect:100 continue一起使用时,服务器将使用412响应,而不是发送100响应,如中所述。我希望在客户端检测这种情况,并避免在这种情况下传输请求主体 当直接使用HttpWebRequest时,实现起来相当简单。在调用GetRequestStream(或GetRequestStreamAsync
如果不匹配:
头,如果系统中已经存在要上传的项目,这将导致服务器报告HTTP 412响应。与Expect:100 continue
一起使用时,服务器将使用412响应,而不是发送100响应,如中所述。我希望在客户端检测这种情况,并避免在这种情况下传输请求主体
当直接使用HttpWebRequest
时,实现起来相当简单。在调用GetRequestStream
(或GetRequestStreamAsync
)之后,但在将数据写入结果流之前,代码只需检查属性。如果该值为true
,请关闭请求流并继续调用GetResponseAsync
现在我正致力于过渡到使用HttpClient
,而不是直接使用HttpWebRequest
(以改进跨多个平台的支持)。目前,我使用一个StreamContent
来表示请求的主体,并观察到流的内容被发送,而不管服务器发送的是100还是412响应。如何使用HttpClient
和HttpRequestMessage
而不是HttpWebRequest
,执行与上述类似的优化?您可以使用HttpContent的PushStreamContent样式来控制请求流的发送,我不知道有什么方法可以得到HaveResponse属性。