मैं कई उदाहरण देखता हूं, लेकिन उनमें से सभी ने उन्हें बाइट सरणियों या एक बार में 256 वर्णों में पढ़ा, धीरे-धीरे। क्यों?
क्या परिणामी Stream
मूल्य को एक स्ट्रिंग में बदलना उचित नहीं है जहां मैं इसे पार्स कर सकता हूं?
जवाबों:
आपको StreamReader
स्ट्रीम के चारों ओर बनाना चाहिए , फिर कॉल करें ReadToEnd
।
आपको WebClient.DownloadString
इसके बजाय कॉल करने पर विचार करना चाहिए ।
User-Agent
।
<a href=
पुराने वाले के बजाय सामान मिलता है जो कि था <A href=
। यह अभी भी एन्कोडिंग से संबंधित है या User-Agent
आपको लगता है?
WebClient
और HttpWebRequest
बिना किसी ब्राउज़र के कच्चे HTTP का उपयोग करें। यदि अलग-अलग ब्राउज़र अलग-अलग स्रोत दिखाते हैं , तो यह एक User-Agent
समस्या है।
आप उपयोग कर सकते हैं StreamReader.ReadToEnd()
,
using (Stream stream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
String responseString = reader.ReadToEnd();
}
StreamReader
दूसरा पैरामीटर है Encoding.UTF8
। ध्यान नहीं दिया कि पहली बार MS प्रलेखन को देखते हुए
GetResponse and GetResponseStream
अपवादों
जैसा कि @Hinzi ने कहा कि प्रतिक्रिया के चरित्र सेट का उपयोग किया जाना चाहिए।
var encoding = response.CharacterSet == ""
? Encoding.UTF8
: Encoding.GetEncoding(response.CharacterSet);
using (var stream = response.GetResponseStream())
{
var reader = new StreamReader(stream, encoding);
var responseString = reader.ReadToEnd();
}
रिचर्ड श्नाइडर सही है। साइट से डेटा प्राप्त करने के लिए नीचे दिए गए कोड का उपयोग करें जो कि utf8 नहीं है charset गलत स्ट्रिंग प्राप्त करेगा।
using (Stream stream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
String responseString = reader.ReadToEnd();
}
"मैं वोट नहीं दे सकता। इसलिए यह लिखा।