HttpClientおよびHttpResponseMessageを使用する場合、WebResponse.IsFromCacheと同等のものは何ですか?HttpClientを使用してHttpResponseMessageがキャッシュから実行されたかどうかを判断する方法
私は見ることのできるレスポンスにいくつかのHTTPヘッダーがありますか?
HttpClientおよびHttpResponseMessageを使用する場合、WebResponse.IsFromCacheと同等のものは何ですか?HttpClientを使用してHttpResponseMessageがキャッシュから実行されたかどうかを判断する方法
私は見ることのできるレスポンスにいくつかのHTTPヘッダーがありますか?
達成しようとしていることを尋ねることはできますか?キャッシュを回避しようとしていますか?
私はHttpClient
(具体的にはHttpClientHandler
)のソースコードとHttpWebResponse
のソースを見てきました。この情報をヘッダーから取得できるとは思いません。
のHttpClient/HttpClientHandler それはがHttpWebResponse
からのすべてのプロパティを公開しない内部しかしHttpWebResponse
を使用しない:だから
private HttpResponseMessage CreateResponseMessage(HttpWebResponse webResponse, HttpRequestMessage request)
{
HttpResponseMessage httpResponseMessage = new HttpResponseMessage(webResponse.StatusCode);
httpResponseMessage.ReasonPhrase = webResponse.StatusDescription;
httpResponseMessage.Version = webResponse.ProtocolVersion;
httpResponseMessage.RequestMessage = request;
httpResponseMessage.Content = (HttpContent) new StreamContent((Stream) new HttpClientHandler.WebExceptionWrapperStream(webResponse.GetResponseStream()));
//this line doesnt exist, would be nice
httpResponseMessage.IsFromCache = webResponse.IsFromCache;// <-- MISSING!
...
}
あなたのオプション私はそれを参照してください方法は、以下のとおりです。
A)を見てくださいHttpWebRequest
のソースコードはIsFromCache
のロジックを決定し、何とかこれをHttpClient
に改造します(これは可能ではないかもしれませんが、実際のロジック
b)このプロパティをHttpResponseMessageに含めるようにASP.NETチームに依頼してください。これらのオプションはいずれも大変申し訳ございませんが、私の元々の質問は、あなたは何を達成しようとしていますか?
FYI:Windows.Web.Http HttpClient(Windows 8.1のアプリケーション開発でターゲットにされた同様のAPI)には、結果がどこから来たのかを指定するHttpResponseMessage.Sourceフィールドが含まれています(一般的な値は "cache"と "network")。 。
Windows.Web.Httpクラスは、C#やその他の.NET言語、C++、およびJavaScript(WindowsアプリケーションストアなどのWwaHostアプリケーションとして実行している場合)から使用できます。
私はそれが欠けていることを認識しています。また、HttpClientのソースコードを見てきました.HttpWebRequestとIsFromCacheのソースはかなり難読化されているため、リバースエンジニアリングは難しく、不可能です。私はそれが必要なのは、HTTPエラーがキャッシュから返されたときに、クライアントが気づくであろうサーバー上でエラーが修正されているかどうかを確認するために、キャッシュリロードパラメータで再度試す必要があるからです。 –