Ich habe einen C# -Client, der mit einem cherrypy (http/rest) Webservice kommuniziert. Das Problem ist, dass ich nicht gleichzeitig Komprimierung und Caching aktivieren kann.Wie Komprimierung und Caching in HttpWebRequest mischen?
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
Durch die obige Zeile Weglassen bekomme ich die richtigen Caching-Header (If-None-Math, If-Modified-Since), während es auszukommen wird mir die Kompression Header (Accept-Encodig: gzip), aber nicht die Caching-Header. Es scheint mir wie ein Käfer, aber vielleicht mache ich etwas falsch.
[vollständiger Code]
public static string GET(string URL)
{
string JSON;
// Create the web request
HttpWebRequest request = WebRequest.Create(URL) as HttpWebRequest;
HttpRequestCachePolicy cPolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.Revalidate);
request.Accept = "application/json";
request.CachePolicy = cPolicy;
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
request.Pipelined = false;
// Get response
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
// Get the response stream
StreamReader readerF = new StreamReader(response.GetResponseStream());
JSON = readerF.ReadToEnd();
// Console application output
//Console.WriteLine(JSON);
if (response.IsFromCache)
Console.WriteLine("Request not from cache");
}
return JSON;
}
Ich habe Ihren Vorschlag ausprobiert, die Cache-Richtlinie auf den Standardwert zu setzen. Die gleichen Ergebnisse, scheint wie Einstellung der Komprimierung deaktiviert Richtlinie. Ich weiß, dass ich einen Cache selbst implementieren kann, aber das ist nicht besonders trivial :-) – AngelBlaZe