2011-09-25 13 views
71

मुझे कई उदाहरण दिखाई देते हैं लेकिन उनमें से सभी एक बार में बाइट एरे या 256 वर्णों में धीरे-धीरे पढ़ते हैं। क्यूं कर?WebResponse.GetResponseStream को एक स्ट्रिंग में कैसे परिवर्तित करें?

क्या यह सलाह दी जाती है कि परिणामस्वरूप Stream वैल्यू को केवल एक स्ट्रिंग में परिवर्तित करें जहां मैं इसे पार्स कर सकता हूं?

उत्तर

57

आपको स्ट्रीम के चारों ओर StreamReader बनाना चाहिए, फिर ReadToEnd पर कॉल करें।

आपको इसके बजाय WebClient.DownloadString पर कॉल करना चाहिए।

+1

धन्यवाद SLaks, अब DownloadString जाँच। असल में मैं जहां यह Winforms browser.DocumentStream का उपयोग कर का उपयोग करता है मेरे पुराने एप्लिकेशन की तुलना में अलग स्रोत कोड तार gettng हूँ ब्राउज़र नियंत्रण। आपको लगता है कि डाउनलोडस्ट्रिंग इसे ठीक करेगी? अगर यह सीधा नहीं है तो मैं एक नया प्रश्न बना सकता हूं। –

+5

आपके पास या तो एन्कोडिंग समस्या है या आपको 'उपयोगकर्ता-एजेंट' सेट करने की आवश्यकता है। – SLaks

+0

धन्यवाद स्लाक्स, मैं अब डाउनलोडस्ट्रिंग का उपयोग करता हूं, और यह बेहतर है कि आप सही हैं। अब परिणाम थोड़ा अलग है, मुझे कोई फर्क नहीं पड़ता है, लेकिन मुझे पुराने <'a href = 'की तरह'

118

आप StreamReader.ReadToEnd() उपयोग कर सकते हैं,

using (Stream stream = response.GetResponseStream()) 
{ 
    StreamReader reader = new StreamReader(stream, Encoding.UTF8); 
    String responseString = reader.ReadToEnd(); 
} 
+1

बहुत बढ़िया! अब एक्सएमएल बनाने और पार्स करना आसान है। –

+1

@ फ़ैज़न मुबाशेर - मैं LINQ से XML का सुझाव देना चाहता हूं। – adatapost

+2

बढ़िया है कि आपने 'StreamReader' को इंगित किया है कि दूसरा पैरामीटर' एन्कोडिंग.यूटीएफ 8 'लेता है। ध्यान नहीं दिया कि एमएस प्रलेखन को देखते हुए पहली बार – newprint

2

आप एक StreamReader धारा के आसपास बनाने के लिए, तो StreamReader.ReadToEnd() कॉल कर सकते हैं।

StreamReader responseReader = new StreamReader(request.GetResponse().GetResponseStream()); 
var responseData = responseReader.ReadToEnd(); 
4

जैसा कि @ हिनजी ने प्रतिक्रिया के चरित्र सेट का उल्लेख किया जाना चाहिए।

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(); 
} 
+0

यह स्वीकार्य उत्तर होना चाहिए। –

3

रिचर्ड श्नाइडर सही है। साइट से डेटा लाने के लिए नीचे दिए गए कोड का उपयोग करें जो utf8 charset को गलत स्ट्रिंग नहीं मिलेगा।

using (Stream stream = response.GetResponseStream()) 
{ 
    StreamReader reader = new StreamReader(stream, Encoding.UTF8); 
    String responseString = reader.ReadToEnd(); 
} 

" मैं vote.so यह लिखा नहीं कर सकते।

संबंधित मुद्दे