Вы уже прочитали все данные из ответа, когда звоните
resXML = readerStream.ReadToEnd();
... readerStream
и readStream
располагаются поверх receiveStream
, поэтому, прочитав все данные через одну, вы не сможете снова прочитать через другую.
Вы действительно должны иметь using
оператор для ответа - и в идеале различные вовлеченные потоки. Учитывая, что вы можете создать XmlReader
из потока, а не просто StreamReader
, почему бы просто не использовать что-то вроде этого:
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.IgnoreWhitespace = true;
settings.IgnoreComments = true;
using (HttpWebResponse response = (HttpWebResponse)webreq.GetResponse())
{
using (Stream stream = response.GetResponseStream())
{
using(XmlReader reader = XmlReader.Create(stream, settings))
{
// Do stuff here
}
}
}
Кроме того, я бы обычно рекомендовал бы создать XmlDocument
или что-то подобное, а не работать с XmlReader
- он не так хорошо масштабируется для больших документов, но с ним легче работать