2012-08-25 57 views
1

我想用C#來下載這個圖片嘗試下載圖像,但是服務器不發送數據

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

當我嘗試使用Web客戶端,我得到一個異常說底層連接下載它被關閉不料。

我試圖修改標題來模擬鉻

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. 

任何人都可以算出這個工作?

+0

這可能發生,即使由於代理,所以先介紹一下您的環境 – perilbrain

+0

例外的東西有什麼特別的我的環境。只需從家庭網絡運行它,我就可以在Chrome上看到它。 – Dharun

回答

0

的問題是我用重用WebClient的對象。當If-Modified-Since頭部有304個HTTP狀態碼時,我認爲它會奇怪地緩存一些內容。故事的道德是不要嘗試重用WebClient對象。

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)); 
} 
+0

嗯,這不適合我。 – Dharun

+0

@SwearWord上面的代碼工程,我測試了它。你用'wc.Proxy = null'試過了嗎? –

+0

是的,我想我需要在另一個網絡上測試它,看看它是否與我的奇怪。 – Dharun