1

C#を使用してこの画像をダウンロードしようとしています

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

WebClient を使用してダウンロードしようとすると、基になる接続が予期せず閉じられたという例外が発生します。

クロムをシミュレートするためにヘッダーを変更しようとしました

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 に答える