मैं कई उदाहरण देखता हूं, लेकिन उनमें से सभी ने उन्हें बाइट सरणियों या एक बार में 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();
}
"मैं वोट नहीं दे सकता। इसलिए यह लिखा।