पर AcceptEncoding संपीड़न सेट करें हम अपने क्लाइंट में उपयोगकर्ता-निर्धारित (सेटिंग्स स्क्रीन पर) वैकल्पिक gzip संपीड़न को लागू करने की कोशिश कर रहे हैं जो HttpClient
का उपयोग करता है, इसलिए हम लॉग ऑन और कई अलग-अलग कॉलों पर प्रदर्शन की तुलना कर सकते हैं समय की अवधि। हमारा पहला प्रयास के रूप में इस बस सशर्त हैडर जोड़ने के लिए किया गया था:एचटीपी क्लाइंट: सशर्त रूप से सेटटाइम
HttpRequestMessage request = new HttpRequestMessage(Method, Uri);
if (AcceptGzipEncoding)
{
_client.DefaultRequestHeaders.AcceptEncoding.Add(new System.Net.Http.Headers.StringWithQualityHeaderValue("gzip"));
}
//Send to the server
result = await _client.SendAsync(request);
//Read the content of the result response from the server
content = await result.Content.ReadAsStringAsync();
यह सही अनुरोध बनाया है, लेकिन Gzipped प्रतिक्रिया वापसी पर decompressed नहीं किया गया था, एक विकृत प्रतिक्रिया में जिसके परिणामस्वरूप। मैंने पाया है कि हम HttpClientHandler
शामिल करने के लिए जब HttpClient
निर्माण किया था:
HttpClient _client = new HttpClient(new HttpClientHandler
{
AutomaticDecompression = DecompressionMethods.GZip
});
यह सब अच्छी तरह से काम करता है, लेकिन हम ग्राहक क्रम पर Accept-Encoding: gzip
हैडर भेजता है या नहीं बदलना चाहते हैं, और वहाँ नहीं है HttpClient
कन्स्ट्रक्टर को पास करने के बाद HttpClientHandler
तक पहुंचने या बदलने का कोई तरीका दिखाई देता है। इसके अलावा, HttpRequestMessage
ऑब्जेक्ट के हेडर को बदलने से अनुरोध के शीर्षकों पर कोई प्रभाव नहीं पड़ता है यदि उन्हें HttpClientHandler
द्वारा परिभाषित किया गया है।
क्या यह परिवर्तन हर बार HttpClient
पुनर्निर्माण किए बिना ऐसा करने का कोई तरीका है?
संपादित करें: मैं भी HttpClientHandler
के लिए एक संदर्भ को संशोधित करने के क्रम में AutomaticDecompression
बदलने की कोशिश की है, लेकिन है कि इस अपवाद फेंक रहा है:
इस उदाहरण पहले से ही एक या अधिक अनुरोध शुरू कर दिया है। पहले अनुरोध भेजने से पहले गुणों को केवल संशोधित किया जा सकता है।
बस उत्सुक है, अब आप देखा है कि कैसे काम स्वत: विसंपीड़न है, क्यों * * ग्राहक प्रत्येक पुन: नहीं समय परिवर्तन बदल रहा है? यह वही है जो मैं यहां करता हूं, जब तक कि इसका कोई अच्छा कारण न हो। –
@ToddMenier यह एक बहुत ही वैध सवाल है। यह कुछ ऐसा है जिसे हम विचार कर रहे हैं, लेकिन मुझे लगता है कि थोड़ा सा पुनर्गठन की आवश्यकता होगी, क्योंकि एक ही एचटीपी क्लाइंट कई क्षेत्रों में बंधे हैं। यह पहले के डेवलपर्स से विरासत में प्राप्त एक मामूली आकार का एप्लिकेशन है, इसलिए हमें केवल बदलावों को ध्यान से प्रबंधित करना होगा। हम इस सप्ताह इसे देख रहे होंगे।टिप्पणियों और मदद के लिए धन्यवाद। – pcdev