मैं अन्य वेबसाइट से एचटीएमएल पेज डाउनलोड करने के लिए एक प्रोग्राम लिख रहा हूं। मुझे एक समस्या मिली है कि किसी विशेष वेबसाइट के लिए, मुझे पूरा HTML कोड नहीं मिल सकता है। और मैं केवल आंशिक सामग्री प्राप्त कर सकता हूं। इस समस्या वाला सर्वर "ट्रांसफर-एन्कोडिंग: खंडित" में डेटा भेज रहा है मुझे डर है कि यह समस्या का कारण है।रिटर्न सामग्री एन्कोडिंग होने पर HttpWebResponse से पूरी सामग्री कैसे प्राप्त करें: खंडित?
इस सर्वर द्वारा लौटाए हेडर सूचना:
Transfer-Encoding: chunked
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Content-Type: text/html; charset=UTF-8
Date: Sun, 11 Sep 2011 09:46:23 GMT
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Server: nginx/1.0.6
यहाँ मेरी कोड है:
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
HttpWebResponse response;
CookieContainer cookie = new CookieContainer();
request.CookieContainer = cookie;
request.AllowAutoRedirect = true;
request.KeepAlive = true;
request.UserAgent =
@"Mozilla/5.0 (Windows NT 6.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2 FirePHP/0.6";
request.Accept = @"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
string html = string.Empty;
response = request.GetResponse() as HttpWebResponse;
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
html = reader.ReadToEnd();
}
मैं केवल आंशिक एचटीएमएल कोड (मुझे लगता है कि यह पहली बार हिस्सा है मिल सर्वर से)। क्या कोई मदद कर सकता है? कोई भी समाधान?
धन्यवाद!
HttpWebResponse पहले से ही जानता है कि कैसे खंडित डेटा से निपटने के लिए। जिसे आप अनदेखा नहीं कर सकते हैं वह ContentEncoding है। आप अपने StreamReader कन्स्ट्रक्टर कॉल में utf8 मानते हैं, यह गलत होने पर यह गलत हो जाएगा। –
हाय हंस पासेंट, आपकी टिप्पणियों के लिए धन्यवाद। मैं पुष्टि करता हूं कि वेब पेज यूटीएफ 8 एन्कोडिंग के साथ है। मैं StreamReader में एन्कोडिंग सेटिंग को ASCII में बदलने की कोशिश करता हूं, फिर भी वही परिणाम, यदि यूनिकोड में बदल जाता है, तो सभी सामग्री अपठनीय कोड हैं। – syking
@ हंसपैसेंट मुझे स्पष्ट रूप से एक ही समस्या है लेकिन StreamReader कन्स्ट्रक्टर में एन्कोडिंग पास करने में मदद नहीं मिलती है। मैंने रेस्पॉन्सस्ट्रीम को मेमोरीस्ट्रीम में कॉपी करने और सभी संभावित एन्कोडिंग के लिए स्ट्रीम रीडर बनाने की भी कोशिश की और उनमें से कोई भी सभी हिस्सों को पूरी तरह से डंप करने में सक्षम नहीं था। कोई उपाय? –