Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将HTTP流保存到c中的文件#_C#_Asp.net - Fatal编程技术网

C# 将HTTP流保存到c中的文件#

C# 将HTTP流保存到c中的文件#,c#,asp.net,C#,Asp.net,我得到一个XML响应作为一个HTTPresponse,效果很好。现在我正试图把它保存到光盘上,以备将来使用。我正在尝试使用中描述的第二种方法(第一种方法也不起作用)。文件已创建,但为空 Stream dataStream = response.GetResponseStream(); StreamReader reader = new StreamReader(dataStream); XmlDocument events = new XmlDocument(); events.Load(re

我得到一个XML响应作为一个HTTPresponse,效果很好。现在我正试图把它保存到光盘上,以备将来使用。我正在尝试使用中描述的第二种方法(第一种方法也不起作用)。文件已创建,但为空

Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);

XmlDocument events = new XmlDocument();
events.Load(reader);

var fileStream = File.Create("C:\\XMLfiles\\test.xml");
CopyStream(dataStream, fileStream);
fileStream.Close();

public static void CopyStream(Stream input, Stream output)
{
    byte[] buffer = new byte[8 * 1024];
    int len;
    while ((len = input.Read(buffer, 0, buffer.Length)) > 0)
    {
        output.Write(buffer, 0, len);
    }
}

这是一个棘手的局面。问题是您已经阅读了
HttpResponseStream
。因此,您处于流的末尾。在正常情况下,您只需设置
dataStream.Position=0
。然而,你不能在这里这样做,因为我们不是在谈论你电脑上的文件,它是一个网络流,所以你不能“倒退”(它已经发送给你)。因此,我建议您不要再次尝试编写原始流,而是编写
XmlDocument

Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);

XmlDocument events = new XmlDocument();
events.Load(reader);
events.Save("C:\\XMLfiles\\test.xml");

在这种情况下,它将起作用,因为您正在保存复制到
XmlDocument
的数据,而不是尝试重新读取网络流。

请使用以下代码段。不要忘记“使用”方法

HttpWebRequest tt = HttpWebRequest.CreateHttp("http://www.stackoverflow.com");

            using (var yy = tt.GetResponse())
            using (var stream = yy.GetResponseStream())
            using (var file = File.Open(@"c:\response.html", FileMode.Create))
            {
                stream.CopyTo(file);
                stream.Flush();
            }

别忘了冲水。。。把座位放下!