2

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

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

现在我正在努力过渡到使用HttpClient而不是HttpWebRequest直接使用(以改进跨多个平台的支持)。目前,我使用 aStreamContent来表示请求的主体,并观察流的内容是否已发送,无论服务器是否发送了 100 或 412 响应。如何使用HttpClientandHttpRequestMessage而不是执行与上述优化类似的优化HttpWebRequest

4

0 回答 0