this answer में, मैंने वर्णन किया कि मैंने इसे डिकंप्रेस करने के लिए, HttpWebResponse में प्रतिक्रिया स्ट्रीम के चारों ओर एक GZipStream को लपेटने का सहारा लिया था।.NET: क्या Gttip'd प्रतिक्रियाओं को स्वचालित रूप से डिक्रॉप करने के लिए HttpWebRequest प्राप्त करना संभव है?
प्रासंगिक कोड इस तरह दिखता है:
HttpWebRequest hwr = (HttpWebRequest) WebRequest.Create(url);
hwr.CookieContainer =
PersistentCookies.GetCookieContainerForUrl(url);
hwr.Accept = "text/xml, */*";
hwr.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
hwr.Headers.Add(HttpRequestHeader.AcceptLanguage, "en-us");
hwr.UserAgent = "My special app";
hwr.KeepAlive = true;
using (var resp = (HttpWebResponse) hwr.GetResponse())
{
using(Stream s = resp.GetResponseStream())
{
Stream s2 = s;
if (resp.ContentEncoding.ToLower().Contains("gzip"))
s2 = new GZipStream(s2, CompressionMode.Decompress);
else if (resp.ContentEncoding.ToLower().Contains("deflate"))
s2 = new DeflateStream(s2, CompressionMode.Decompress);
... use s2 ...
}
}
वहाँ एक रास्ता स्वचालित रूप से एक de-संपीड़ित धारा प्रदान करने के लिए, HttpWebResponse प्राप्त करने के लिए है? दूसरे शब्दों में, उपर्युक्त कोड से निम्नलिखित को खत्म करने का एक तरीका:
Stream s2 = s;
if (resp.ContentEncoding.ToLower().Contains("gzip"))
s2 = new GZipStream(s2, CompressionMode.Decompress);
else if (resp.ContentEncoding.ToLower().Contains("deflate"))
s2 = new DeflateStream(s2, CompressionMode.Decompress);
धन्यवाद।
चा-चिंग! धन्यवाद। मुझे यह कैसे याद आएगा? – Cheeso
धन्यवाद, मैंने एक प्रयोग खंड को नियोजित करने के लिए भी अपना प्रश्न तय किया है। – Cheeso
"स्वीकार्य-एन्कोडिंग HTTP शीर्षलेख मैन्युअल रूप से जोड़ने के लिए आवश्यक नहीं है" - इसके अलावा, यदि आप करते हैं, तो "gzip" और "deflate" मान शीर्षलेख में डुप्लिकेट किए जाएंगे जो कुछ सर्वर अनुरोध को अस्वीकार कर सकता है। – Chad