我试图通过以下两次读取Http响应流:
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
stream = response.GetResponseStream();
RssReader reader = new RssReader(stream);
do
{
element = reader.Read();
if (element is RssChannel)
{
feed.Channels.Add((RssChannel)element);
}
} while (element != null);
StreamReader sr = new StreamReader(stream);
feed._FeedRawData = sr.ReadToEnd();
Run Code Online (Sandbox Code Playgroud)
但是,当StreamReader代码执行时,没有返回数据,因为流现在已经到达终点.我尝试通过stream.Position = 0重置流,但这会引发异常(我认为因为流不能手动更改其位置).
基本上,我想解析XML的流并且可以访问原始数据(以字符串格式).
有任何想法吗?
Iai*_*ain 69
首先将其复制到新的MemoryStream中.然后你可以根据需要多次重读MemoryStream:
Stream responseStream = CopyAndClose(resp.GetResponseStream());
// Do something with the stream
responseStream.Position = 0;
// Do something with the stream again
private static Stream CopyAndClose(Stream inputStream)
{
const int readSize = 256;
byte[] buffer = new byte[readSize];
MemoryStream ms = new MemoryStream();
int count = inputStream.Read(buffer, 0, readSize);
while (count > 0)
{
ms.Write(buffer, 0, count);
count = inputStream.Read(buffer, 0, readSize);
}
ms.Position = 0;
inputStream.Close();
return ms;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28869 次 |
| 最近记录: |