试图下载图像,但服务器不发送数据

时间:2012-08-25 19:10:27

标签: c# wget

我正在尝试使用C#

下载此图像

http://www.pinkice.com/data/product_image/1/13954Untitled-1.jpg

当我尝试使用WebClient下载它时,我得到一个异常,说底层连接意外关闭。

我已尝试修改标题以模拟chrome

Headers[HttpRequestHeader.Accept] = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
Headers[HttpRequestHeader.AcceptLanguage] = "en-US,en;q=0.8";
Headers[HttpRequestHeader.CacheControl] = "max-age=0";
Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.6 (KHTML, like Gecko) Chrome/23.0.1243.2 Safari/537.6";

这不起作用。然后我试着看看它是否适用于wget

wget "http://www.pinkice.com/data/product_image/1/14231Untitled-2.jpg"

导致了

HTTP request sent, awaiting response... No data received. Retrying.

有人可以解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

以下代码有效..

using (WebClient wc = new WebClient())
{

    wc.Headers["User-Agent"] = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1";
    byte[] buf = wc.DownloadData("http://www.pinkice.com/data/product_image/1/13954Untitled-1.jpg");
    Image bmp = Image.FromStream(new MemoryStream(buf));
}

答案 1 :(得分:0)

问题是我正在使用重用WebClient对象。我认为当If-Modified-Since标头中有一个304 HTTP状态代码时,它会很奇怪地缓存一些东西。故事的道德是不要试图重用WebClient对象。