J'ai un client C# qui parle à un webservice cherrypy (http/rest). Le problème est que je ne peux pas activer à la fois la compression et la mise en cache en même temps.Comment mélanger la compression et la mise en cache dans HttpWebRequest?
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
En laissant la ligne ci-dessus je reçois les en-têtes de mise en cache correcte (If-None-Math, If-Modified-Since) en commentant dehors moi obtient les en-têtes de compression (Accept-Codage du: gzip), mais pas les en-têtes de mise en cache. Cela me semble être un bug mais peut-être que je fais quelque chose de mal.
[code complet]
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;
}
J'ai essayé votre suggestion en définissant la stratégie de cache par défaut. Les mêmes résultats, semble être le réglage de la stratégie de désactivation de la compression. Je sais que je peux mettre en place un cache moi-même, mais ce n'est pas trivial trivial :-) – AngelBlaZe