c# - 当我下载太快时,C# Webclient().OpenRead 是连接返回 404 错误
问题描述
我正在制作一个小应用程序,它将显示我所在地区的当前雷达图像。这些图像在此 Web 文件夹中公开可用: https ://radar.weather.gov/ridge/RadarImg/N0R/MPX/
好的,没问题。我有一种方法可以读取文件夹并解析其中的链接,然后像这样一次下载一个:
WebClient wc = new WebClient();
Stream stream;
foreach (string file in folderList)
{
client.Headers.Add("Accept-Language", " en-US");
client.Headers.Add("User-Agent", "Mozilla/6.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"); // Get something sane for the server, or it rejects the connection.
stream = client.OpenRead(file);
//Do something with the stream data
stream.Flush();
stream.Close();
}
它可以下载一个文件就好了。它可以下载多个文件,直到它到达大约第五个文件,然后它会抛出一个错误
远程服务器返回错误:(404) Not Found。
那,似乎是一个谎言。该文件实际上就在那里,如果我将文件链接复制粘贴到浏览器中,它会立即加载。
如果我添加一个 System.threading.thread.sleep(10000); 让它在每个文件之间暂停十秒钟,它永远不会出错。
那么我是在用我的网络客户端做一些非常愚蠢的事情,还是这就是radar.gov 强制执行节流的方式?
解决方案
推荐阅读
- javascript - If 语句中的甜蜜警报
- arrays - API 设计:未记录的对象键与对象数组
- ios - Swift 和 Objc 互操作性 - 可用性不仅仅在 objc 中起作用
- c# - 嵌套的 Try/Catch 块
- c++ - Boost.Test 的数据测试用例真的需要 C++11 吗?
- javascript - 我有这个表格,但我无法通过验证
- d3.js - D3 - 如何将“x”坐标“rect”值的开始设置为“x”轴上的匹配时间/日期
- c# - 如何将 Google Can Stoage 作为文件提供程序链接到 ASP.NET Core 2.2 项目?
- java - Java中如何避免数组越界异常
- ruby-on-rails - 如何在 Rails 中为部分参数提供默认值?