gpt4 book ai didi

c# - 将 GetResponseStream 输出返回给另一个函数,respone 处理呢

转载 作者:太空宇宙 更新时间:2023-11-03 11:12:12 25 4
gpt4 key购买 nike

我正在研究下载管理器项目我正在使用:

public Stream GetStream(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
return response.GetResponseStream();
}

然后在 while 语句中使用返回的流作为输入流,FileStream 作为输出流:

Stream InputStream = GetStream("http://test_url/test.zip");
Stream OutputStream = new FileStream("d:\\test.zip", FileMode.Create, FileAccess.Write));
do
{
readSize = InputStream.Read(buffer, 0, buffSize);
OutputStream.Write(buffer, 0, (int)readSize);
}
while (readSize > 0);

当使用我的 256kpps 连接下载超过 50MB 的文件时大约 20 - 30 MB 后,readSize 变为 0 而没有错误

我的问题是:Response 对象有什么问题吗,它被处置了吗????或者有什么问题?

先谢谢你,如果我不能解释得更好,我很抱歉。

最佳答案

您没有处理 HttpWebRequest/HttpWebResponse 对象,这可能会导致问题 - 对同一服务器的并发连接数有内置限制。

你应该这样做:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
using(HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using(Stream responseStream = response.GetResponseStream())
{
using(Stream outputStream = new FileStream(...))
{
responseStream.CopyTo(outputStream);
}
}
}

Stream.CopyTo 是 .NET 4.0 中的新功能。如果您使用的是 .NET <= 3.x,则需要 write your own .

关于c# - 将 GetResponseStream 输出返回给另一个函数,respone 处理呢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13575607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com