動的なページを正しくダウンロードするには

[戻る]
aharen [HomePage] 2010/01/28(木) 16:24:07
お世話になります
環境と道具は Windows Vista VC++2008 Pro C++/CLR Windowsフォームアプリケーショ
ンです
動的なページを途中経過を表示しながらダウンロードしようとしているのですが
うまくいかなのでご教示いただきたくお伺いします
フォームにはbutton1とlabel1を配置しました
コードはMSDNを参考に寄せ集めて末尾のとおりつくりました
URI(http://www.yahoo.co.jp/)とローカルのフルパスは解決するまで固定していま
す
YJ(YahooJapan )は動的なページではありますが
サイズはだいたい85〜105KBです(OS付属のダウンロードダイアログでたしか
めました)
ところが末尾記載のコードを走らせますと結果は25〜35KBです
エラーメッセージはでませんが ダウンロードしたファイルを起動し開きますと
文字の色合いなどちがいますので ダウンロードは正しくないと言えると思います
そこで お伺いしたいのはどこに原因があると考えられますでしょうか
なお HttpWebRequestやHttpWebResponseなど使っても同様でした


(先頭からここまで省略)
#pragma endregion
    private: System::Void button1_MouseClick(System::Object^  sender, 
System::Windows::Forms::MouseEventArgs^  e)
    {
        WebClient^ wc = gcnew WebClient();
        wc->DownloadFileCompleted += gcnew AsyncCompletedEventHandler
(this, &Form1::_DownloadFileCompleted);
        wc->DownloadProgressChanged += gcnew 
System::Net::DownloadProgressChangedEventHandler(this, 
&Form1::_DownloadProgressChanged);
        wc->DownloadFileAsync(gcnew Uri
("http://www.yahoo.co.jp/"), "D:\\ZZZ\\yahoo.html");
    }

    void Form1::_DownloadFileCompleted(System::Object ^sender, 
AsyncCompletedEventArgs ^e)
    {
        MessageBox::Show("Download completed");
    }
    void Form1::_DownloadProgressChanged(System::Object ^sender, 
System::Net::DownloadProgressChangedEventArgs ^e)
    {
        label1->Text = e->BytesReceived.ToString();
    }

aetos 2010/01/28(木) 16:29:49
Asyncではなくて同期ダウンロードだとどうです?
WebClient がローカル変数なので、ダウンロードが終わる前に WebClient が死んでると
か…。

aharen [HomePage] 2010/01/29(金) 10:03:14
ご回答ありがとうございます
>Asyncではなくて同期ダウンロードだとどうです?
同期でもダウンロードされるバイト数はかわりません
その上 同期ですとDownloadProgressChangedのイベントが発生しないようです

tetrapod 2010/01/29(金) 10:57:54
送り側 (Yahoo 側) が UA を見て CSS あたりを作り分けてるとか

PATIO 2010/01/29(金) 13:11:58
私もtetrapodさんの意見に一票。

aharen [HomePage] 2010/01/30(土) 09:25:44
ご回答ありがとうございます
>送り側 (Yahoo 側) が UA を見て CSS あたりを作り分けてるとか
UAはUser-Agentのことでしょうか

tetrapod 2010/01/30(土) 23:27:21
UA は User Agent のこと
CSS は Cascading Style Sheet のこと

文字の色合いが違う=色指定が違う= CSS が違うと見たわけだが、
本当に UA ごとに CSS など (CSS だけに限る気はない) が違うかどうかの検証は
していないし、する気も無いのであしからず

wclrp ( 'o') 2010/01/31(日) 18:23:38
UA変えてアクセスしてみたらFirefoxでも内容が違うこと確認したよ。

subaru 2010/02/01(月) 09:34:02
「WebClient User Agent」でグーグル先生に聞いてみました。
http://www.atmarkit.co.jp/fdotnet/dotnettips/302wcget/wcget.html
ページ後半の「Headersプロパティによるヘッダ情報の追加」のところに対処法が書いて
あります。

aharen [HomePage] 2010/02/01(月) 12:23:12
[[解決]]
wclrp ( 'o') さん subaru さん

うまくいきました

ありがとうございました

特に subaru さんの具体的なご教示は

大変助かりました

古いスレッドには追加発言できません。