使用Expect时处理失败:100-Continue with HttpClient

时间:2014-04-29 21:41:40

标签: .net dotnet-httpclient http-status-code-100 http-status-code-412

我对优化调用REST API的客户端的行为感兴趣。在此API中,特定的POST操作允许包含If-None-Match: *标头,如果正在上载的项目已存在于系统中,则会导致服务器报告HTTP 412响应。当与Expect: 100-continue一起使用时,服务器将使用发送100响应的412 而不是进行响应,如RFC 2616 §8.2.3中所述。我想在客户端检测到这种情况,并避免在这种情况下传输请求的主体。

直接使用HttpWebRequest时,实现起来非常简单。在调用GetRequestStream(或GetRequestStreamAsync)之后,但在将数据写入生成的Stream之前,代码只需要检查HaveResponse属性。如果值为true,请关闭请求流并继续致电GetResponseAsync

现在我正在转换使用HttpClient而不是直接使用HttpWebRequest(以改善跨多个平台的支持)。目前我使用StreamContent来表示请求的主体,并观察流的内容是否发送,无论服务器是否发送了100或412响应。如何使用HttpClientHttpRequestMessage代替HttpWebRequest执行与上述类似的优化?

0 个答案:

没有答案