【问题标题】:webclient download problemwebclient下载问题
【发布时间】:2010-12-27 13:46:40
【问题描述】:

如果之前讨论过这个问题,很抱歉再次询问..

我想使用 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:无法从传输连接中读取数据:现有连接被远程强制关闭host.-->System.Net.Sockets.SocketException:An现有连接被远程主机强行关闭...bla bla

感谢您的帮助。

【问题讨论】:

    标签: c# .net webclient


    【解决方案1】:

    您必须启动 Fiddler 之类的工具才能查看传输层发生的情况,但在 IMO 中,听起来好像您对它们的攻击过多而服务器已将您切断关闭一段时间(是的:如果您积极地点击它们,例如通过脚本,许多网站都会这样做)。

    特别是,既然您提到了 google:请参阅 terms of service(重点是我的):

    5.3 您同意不通过 Google 提供的界面以外的任何方式访问(或尝试访问)任何服务,除非您在与 Google 的单独协议中获得特别许可。 您明确同意不通过任何自动化方式(包括使用脚本或网络爬虫)访问(或试图访问)任何服务,并应确保您遵守任何机器人中的说明.txt 文件存在于服务中。

    网站也经常会根据referer http 标头阻止对图片的访问,以阻止在您的网站中跨站点嵌入他们的图片。

    【讨论】:

      【解决方案2】:

      出现此错误的原因可能与网络有关,或者客户端计算机无法访问远程图像(网络问题、防火墙等),与 .NET、WebClient 或编程无关。如果您尝试从同一个 IP 发送多个请求,远程站点也可能会限制访问。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-03
        • 1970-01-01
        • 2012-01-14
        • 2014-08-28
        • 2020-03-06
        • 2016-04-28
        相关资源
        最近更新 更多