1

我正在尝试使用 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.

任何人都可以解决这个问题吗?

4

2 回答 2

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));
}
于 2012-08-25T19:28:17.317 回答
0

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

于 2012-08-26T02:52:00.317 回答