REST API を呼び出すクライアントの動作を最適化することに関心があります。この API では、特定の POST 操作でIf-None-Match: *
ヘッダーを含めることができます。これにより、アップロードされているアイテムがシステムに既に存在する場合、サーバーは HTTP 412 応答を報告します。とともに使用すると、 RFC 2616 §8.2.3で説明されているように、サーバーは 100 応答を送信する代わりExpect: 100-continue
に412で応答します。クライアントでこの状態を検出し、この場合はリクエストの本文を送信しないようにしたいと思います。
を直接操作する場合HttpWebRequest
、これを実装するのはかなり簡単です。GetRequestStream
(または)を呼び出した後GetRequestStreamAsync
、結果の にデータを書き込む前Stream
に、コードでプロパティをチェックする必要がありHaveResponse
ます。値が の場合true
、リクエスト ストリームを閉じて、呼び出しに進みますGetResponseAsync
。
HttpClient
現在、直接作業するのではなく、使用するように移行する作業を行っていHttpWebRequest
ます (複数のプラットフォームでのサポートを改善するため)。現在StreamContent
、リクエストの本文を表すために を使用しており、サーバーが 100 または 412 レスポンスを送信したかどうかに関係なく、ストリームのコンテンツが送信されることを観察しています。の代わりにHttpClient
andを使用して、上記と同様の最適化を実行するにはどうすればよいですか?HttpRequestMessage
HttpWebRequest