如果以前讨论过这个问题,抱歉再次询问..
我想使用System.Net.WebClient类从URL下载图像。
当我尝试下载图片(即.Google徽标)。它不会发生任何错误,但有些图片出现错误。我不明白为什么会出现这种错误。
我该如何解决这个问题?
我的代码是:
WebClient client = new WebClient();
try
{
//Downloads the file from the given url to the given destination
client.DownloadFile(urltxt.Text, filetxt.Text);
return true;
}
catch (WebException w)
{
MessageBox.Show(w.ToString());
return false;
}
catch (System.Security.SecurityException)
{
MessageBox.Show("securityexeption");
return false;
}
catch (Exception)
{
MessageBox.Show("exception");
return false;
}
错误是:
System.Net.WebException:基础连接已关闭:接收时发生意外错误.--> System.IO.IOException:无法从传输连接读取数据:现有连接被强制关闭远程主机.--> System.Net.Sockets.SocketException:远程主机强行关闭现有连接... bla bla
感谢您的帮助。
答案 0 :(得分:1)
你必须点起像Fiddler这样的东西来看看传输层发生了什么,但IMO 听起来就好像你一直在打他们太多而且服务器已经削减了你关闭一段时间(是的:如果你积极地通过脚本点击它们,许多网站都会这样做。)
特别是,因为你提到谷歌:请参阅terms of service(重点是我的):
5.3您同意不通过Google提供的界面以外的任何方式访问(或尝试访问)任何服务,除非您在与Google的单独协议中明确允许这样做。 您明确同意不通过任何自动方式(包括使用脚本或网络抓取工具)访问(或尝试访问)任何服务,并应确保您遵守任何机器人中的说明.txt文件存在于服务上。
网站基于引用者http标头阻止访问图像也是相当常见的,以阻止<em> 网站中 图像的跨站点嵌入。< / p>
答案 1 :(得分:1)
获取此错误的原因可能是网络相关或客户端计算机无法访问远程映像(网络问题,防火墙......),与.NET,WebClient或编程无关。如果您尝试从同一IP发送许多请求,远程站点也可能会限制访问。