gpt4 book ai didi

c# - WebRequest.GetResponse 等待完成

转载 作者:太空宇宙 更新时间:2023-11-03 20:21:33 26 4
gpt4 key购买 nike

我正在用 C# 编写一个 ASP.NET 服务器,它需要从外部服务器获取大量图像。我遇到的问题是图像从我的方法中返回,但看起来它们只加载了一半。

这是通过我的服务器加载时图 block 的样子(这是一个 OSM 循环图图 block ):

tile.png

这就是我在浏览器中打开磁贴时的样子(当然是从同一个 URL):

5.png

我很清楚所有字节都没有通过网络传输,但我不确定它们在哪里丢失了。这是我的代码的样子:

private byte[] GetTile(string url)
{
var response = WebRequest.Create(url).GetResponse();

Stream respStr = response.GetResponseStream();

byte[] buf = new byte[response.ContentLength];
respStr.Read(buf, 0, buf.Length);

return buf;
}

这也不是正确的方法。我的字节去哪儿了?在我从函数返回之前,是否有推荐的方法来等待来自服务器的所有字节到达?

最佳答案

respStr.Read(buf, 0, buf.Length); Read 不保证它将读取 buf.Length 字节。你应该检查它的返回值。或者简单地说,您可以使用 CopyTo

将其复制到另一个流
private byte[] GetTile(string url)
{
var response = WebRequest.Create(url).GetResponse();

Stream respStr = response.GetResponseStream();

MemoryStream m = new MemoryStream();
respStr.CopyTo(m);

return m.ToArray();
}

您还可以使用 WebClient为此

private byte[] GetTile(string url)
{
using (WebClient wc = new WebClient())
{
return wc.DownloadData(url);
}
}

关于c# - WebRequest.GetResponse 等待完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13224265/

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