मैं पढ़ रहा है जब एक StreamReader का उपयोग कर एक HttpWebResponse की() धारा GetResponseStream द्वारा वापस पढ़ने के लिए एक "chunked" प्रतिक्रिया समस्या हो रही है:पढ़ना "chunked" के साथ प्रतिक्रिया HttpWebResponse
// response is an HttpWebResponse
StreamReader reader = new StreamReader(response.GetResponseStream());
string output = reader.ReadToEnd(); // throws exception...
जब reader.ReadToEnd()
विधि है कहा जाता है कि मुझे निम्न सिस्टम मिल रहा है .IO.IOException: परिवहन कनेक्शन से डेटा पढ़ने में असमर्थ: कनेक्शन बंद था।
उपरोक्त कोड ठीक काम करता है जब सर्वर "गैर-खंडित" प्रतिक्रिया देता है।
एकमात्र तरीका जिसे मैं इसे काम करने में सक्षम हूं, प्रारंभिक अनुरोध (HTTP/1.1, डिफ़ॉल्ट के बजाय) के लिए HTTP/1.0 का उपयोग करना है, लेकिन यह एक लंगड़ा काम की तरह लगता है।
कोई विचार?
@Chuck
आपका समाधान बहुत अच्छी काम करता है। यह अभी भी अंतिम पढ़ने() पर एक ही IOExeception फेंकता है। लेकिन स्ट्रिंगबिल्डर की सामग्री का निरीक्षण करने के बाद ऐसा लगता है कि सभी डेटा प्राप्त हुए हैं। तो शायद मुझे रीड() को रीक-कैच में लपेटने और "त्रुटि" निगलने की आवश्यकता है।
chunked प्रतिक्रिया पढ़ने के लिए, आप http://en.wikipedia.org/wiki/Chunked_transfer_encoding –
मैं नेट 4.6 के साथ इस व्यवहार दिखाई दे रही है पालन करने की आवश्यकता PowerDNS 3.4.5 HTTP REST API से कनेक्ट हो रहा है। कामकाज मदद नहीं करते हैं। अगर मैं अपवाद निगलता हूं, तो मैं प्रतिक्रिया का हिस्सा खो देता हूं। –