1
Я использую веб-службу, которая возвращает xml, и я хочу прочитать ее в строке. Я использую метод ReadToEnd класса StreamReader, но в этот момент OutOfMemory Exception возникает из-за большого количества XML-данных. Есть ли способ, чтобы получить этот .my код нижеStreamReader OutOfMemoryException
Stream dataStream;
WebResponse response;
string responseFromServer = string.Empty;
string url = myurl;
WebRequest request = WebRequest.Create(url);
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] data = encoding.GetBytes(postData.ToString());
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
dataStream = request.GetRequestStream();
dataStream.Write(data, 0, data.Length);
dataStream.Close();
response = request.GetResponse();
using (Stream stream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(stream))
{
try
{
responseFromServer = reader.ReadToEnd();
}
catch (Exception ex)
{
throw ex;
}
}
}
Не используйте 'ReadToEnd' в потоке, который полностью побеждает его цель. Вы используете потоки, читая байты или строки, действуя на каждый раз, затем отбрасывая его и обрабатывая следующий байт или строку. О, и удалите 'catch (Exception ex) throw ex;' из всего кода, который вы когда-либо пишете. –
Что вы хотите делать с данными? Вы хотите сохранить его в файл? Сформировать XML-документ? Прочитайте и обработайте его в режиме онлайн? Ответ на этот вопрос определит, как вы читаете данные из потока. –
Я хочу загрузить документ xml в свой объект XmlDocument. Я использовал метод ReadToEnd для создания объекта XMLDocument. – user2762782