あるサイト…ぶっちゃけてしまうと、楽天RMS(楽天市場の出店者がアクセスできる、店舗情報の編集サイト)なのですが
Visual Basic 2010 でフォーム・アプリケーションを作り、自動アクセスして必要なファイルをダウンロードしてきたい というのがオーダーです。
楽天RMSにはID/PASSのセキュリティが2つかかっています。
アクセスできるブラウザの種類に制限があるようですが、WebBrowser はIEと見なされるのか、接続できました。
http://web.biz-prog.net/index.html
を参考に、ID/PASSをセットしたり、submitボタンを押すなどの処理を順番に行うよう記述したところ、概ね希望通りになったのですが、要望のsubmitボタンを押すコードを通過したところで
---------
ファイルのダウンロード
このタイルを開くか保存しますか?
---------
のダイアログがでました。
希望の動作としては、このダイアログの保存のボタンを「押した」処理を送り、保存場所を指定して、ファイルを自動ダウンロードしたいです。
ここから、Visual Basic 2010 WebBrowser ダイアログ 保存 など、Googleってみたのですが、希望のサンプルコードなどを見つける事ができませんでした。
見つけたページを総合すると、ファイルのダウンロードはWebClient.DownloadFileを使用するのが簡単な方法のようです
http://dobon.net/vb/dotnet/internet/downloadfile …
しかし、前述の通り、楽天RMSはID/PASSを2種類投入する認証ページを通過する必要があって、WebBrowser でそれを通過してからでないと、ファイルダウンロードのURLに辿り着けません。
WebBrowser でブラウザ上の処理を行った結果、出て来たダイアログボックスを処理する方法がありましたら、教えてください。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
WebBrowserでurlを取得して、WebCientでダウンロード
User-Agentの偽装
http://www.atmarkit.co.jp/fdotnet/dotnettips/302 …
Cookieの偽装
http://bbs.wankuma.com/index.cgi?mode=al2&namber …
http://blogs.yahoo.co.jp/yss2216/14442912.html
ありがとうございます。
ただ、教えてもらった方法はクラスを使うため、VBAからVBに乗り換えて日が浅く、クラスを使った事がなく、参考URLの方法では解決できませんでした。
まだモジュール記載する所までしか知識がないのですが、cookieの引き渡しにはクラスが必須でしょうか?
また、WebBrowserでurlを取得して ですが、
WebBrowser1.Url.ToString
を使用するのだと思いますが、これを使用すると、ダウンロード前のsubmitのあるページのURLを拾ってしまいます。
そのページのhidden要素を連結してブラウザのURLにセットしたところ、ダイアログが出たので、この要素を拾い出す必要があるかと思いますが、これは、htmlを取得して分解するしかないでしょうか?
ちなみに、そのURLを WebClient に渡して実行したところ、認証エラーページをダウンロードしてきました。
No.2
- 回答日時:
formをsubmitしたときのブラウザの動きを再現できれば、Webサーバは希望のファイルを応答します。
URLは、<form action='~'>のURLです。
WebBrowser1.Document.Forms[0].GetAttribute("action")
で取得する。
form以下の<input>も送信する必要があります。
WebBrowser1.Document.Forms[0].GetElementsByTagName("input") で取得して、
WebClient.UploadValues に渡す。
ありがとうございます。
頂いた回答を元にgoogleって、
http://dobon.net/vb/dotnet/internet/webrequestpo …
のサイトからサンプルを得ました。
-----------
※ここまでに、WebBrowser1にURLを与え、ID/PASSを入力させて、サイト内を移動し、ダウンロード指定ページまで進んでいます。
Dim url As String = Form1.WebBrowser1.Document.Forms(0).GetAttribute("action")
Dim wc As New System.Net.WebClient
'NameValueCollectionの作成
Dim ps As New System.Collections.Specialized.NameValueCollection
'送信するデータ(フィールド名と値の組み合わせ)を追加
Dim elem As HtmlElement
For Each elem In Form1.WebBrowser1.Document.Forms(5).GetElementsByTagName("input")
If elem.Name = "" Then
Else
ps.Add(elem.Name, elem.GetAttribute("value"))
End If
Next
'データを送信し、また受信する
Dim resData As Byte() = wc.UploadValues(url, ps)
wc.Dispose()
'受信したデータを表示する
Dim resText As String = System.Text.Encoding.UTF8.GetString(resData)
Console.WriteLine(resText)
---------
これにより、URLとinputの要素は送られている様子です。
※Ps.Addに適用する前に、Debug.Printで確認してみました。
返ってきたresTextの中身は、認証エラーのHTMLなので、送っている要素としてはあっているのではないかと思います。
ただ、WebBrowser から WebClient へ認証が引き渡せるのか? この場合、ファイルを受け取るのではなく、ダウンロードになると思うのですが、その辺りの処理が判らない状態です。
No.3
- 回答日時:
回答1は取り消していないです。
> WebBrowser から WebClient へ認証が引き渡せるのか?
WebBrowserが、Cookie認証チケットを受け取っているので WebClientに渡す必要があります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Android(アンドロイド) いま3台のAndroidを使っています。 AndroidってiPhoneには無いmicroSDXCが 1 2022/05/06 11:42
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- その他(IT・Webサービス) WEBサイト内のファイルを探す方法は? 1 2022/11/11 16:38
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- その他(クラウドサービス・オンラインストレージ) firestorage_androidスマホでダウンロードできない 1 2022/10/25 08:18
- C言語・C++・C# ActiveXコントロールを.NETにインポートできない??? 2 2023/05/02 02:50
- Excel(エクセル) エクセル 任意の列数で分割する方法 3 2022/07/31 14:58
- ドライブ・ストレージ 家庭用のNASについて 2 2022/07/05 18:30
- Windows 10 explorerをedgeで開く方法 2 2022/06/05 14:59
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ホームページでファイルをダウ...
-
java_run.batがダウンロードで...
-
Webサイトから、txtファイルを...
-
ダウンロードしたファイルが「...
-
MP4をダウンロードしたので...
-
asp ダウンロード中にタイムア...
-
HTMLページが勝手にダウンロー...
-
bcpadのコンパイラのインストー...
-
アップロードしたファルダごと...
-
Excelのマクロについて教えてく...
-
IE操作時、ファイルのダウンロ...
-
XMLファイルのダウンロード
-
リッチテキスト入力した内容(ti...
-
ファイルをダウンロードすると...
-
C#のWPFでmidiを再生する方法が...
-
30Mの圧縮ファイルを置ける無料...
-
iPhoneです。 Adobeフラッシュ...
-
現在Javaをダウンロードしてい...
-
html&CSS&jsはどこにある?
-
音楽・動画ファイルをプレイヤ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Webサイトから、txtファイルを...
-
HTMLページが勝手にダウンロー...
-
【HTML】1クリックで複数ファイ...
-
VBA URLDownloadToFileについて
-
URLDownloadToFile でダウンロ...
-
java_run.batがダウンロードで...
-
ホームページでファイルをダウ...
-
Excelのマクロについて教えてく...
-
WEB上でPDF閲覧のみにしたいです。
-
ZIPの拡張子のついたURLがダウ...
-
複数のデータをダウンロードさ...
-
ファイルをダウンロードすると...
-
VBA IE操作でダイアログ表示後...
-
XMLファイルのダウンロード
-
iPhoneです。 Adobeフラッシュ...
-
イラストレーターのaiファイル...
-
ダウンロードサイト作成方法に...
-
エクセルのファイルのダウンロ...
-
rdfファイルをブラウザで表示さ...
-
ダウンロード完了後メッセージ...
おすすめ情報