動的なページを正しくダウンロードするには – プログラミング – Home

動的なページを正しくダウンロードするに...
 
通知
すべてクリア

[解決済] 動的なページを正しくダウンロードするには


aharen
 aharen
(@aharen)
ゲスト
結合: 18年前
投稿: 35
Topic starter  

お世話になります
環境と道具は 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
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

Asyncではなくて同期ダウンロードだとどうです?
WebClient がローカル変数なので、ダウンロードが終わる前に WebClient が死んでると
か…。


返信引用
aharen
 aharen
(@aharen)
ゲスト
結合: 18年前
投稿: 35
Topic starter  

ご回答ありがとうございます
>Asyncではなくて同期ダウンロードだとどうです?
同期でもダウンロードされるバイト数はかわりません
その上 同期ですとDownloadProgressChangedのイベントが発生しないようです


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

送り側 (Yahoo 側) が UA を見て CSS あたりを作り分けてるとか


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

私もtetrapodさんの意見に一票。


返信引用
aharen
 aharen
(@aharen)
ゲスト
結合: 18年前
投稿: 35
Topic starter  

ご回答ありがとうございます
>送り側 (Yahoo 側) が UA を見て CSS あたりを作り分けてるとか
UAはUser-Agentのことでしょうか


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

UA は User Agent のこと
CSS は Cascading Style Sheet のこと

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


返信引用
wclrp ( 'o')
 wclrp ( 'o')
(@wclrp ( 'o'))
ゲスト
結合: 18年前
投稿: 287
 

UA変えてアクセスしてみたらFirefoxでも内容が違うこと確認したよ。


返信引用
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

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


返信引用
aharen
 aharen
(@aharen)
ゲスト
結合: 18年前
投稿: 35
Topic starter  

wclrp ( 'o') さん subaru さん

うまくいきました

ありがとうございました

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

大変助かりました


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました