DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ログインが必要なサイトにOpenReadでアクセスする

環境/言語:[VB2010]
分類:[.NET]

VBでyahooオークションのウォッチリストにアクセスする処理を行おうと
しています。

通常、手動でブラウザでアクセスした場合はログインしたままの状態になっています。
(ログインせずにウォッチリストにアクセスできる)

ところが、.NET Tips に書いてあるようにVBで 以下のようにすると、
ログイン画面が返ってきます。
Dim st As System.IO.Stream = wc.OpenRead("ウォッチリストのURL")

WebBrowserコントロールを使えば以下のようにすればウォッチリストが取得できます。
WebBrowser.Navigate(New Uri("ウォッチリストのURL"))

VB6では以下でウォッチリストが取得できました。
.... = Inet.OpenURL("ウォッチリストのURL", icByteArray)

OpenRead でVB6のようにウォッチリスト(ログインしたままの状態を取得する)
にはどうしたらよいのでしょうか。

クッキーが関連しているのかもしれませんが、そのあたりがよくわかっていません。

環境
OS Windows7
VB2010

よろしくお願いします。
もしもCookieが原因のようでしたら、これは参考になりますか?

http://www.atmarkit.co.jp/fdotnet/dotnettips/326cookie/cookie.html
■No29819に返信(ズッカさんの記事)
> もしもCookieが原因のようでしたら、これは参考になりますか?
>
> http://www.atmarkit.co.jp/fdotnet/dotnettips/326cookie/cookie.html

ありがとうございます。
ここを見てみました。
ここではVB内でログインしてクッキーを取得し、そのクッキーで目的のページに
アクセスしているようです。

私の場合、VB内でログインするのは荷が重いため、VB6のようにVB内でログインぜずに
アクセスできたらと考えています。
なるほど。
VB6のInetは、確かIEのWinInet APIを使っているので、クッキーはIEのものが使えますので、ログインが不要だったのでしょう。
もし、IEのクッキーを使って該当サイトにアクセスするならば、WinInet APIを使うことになるでしょう。

ただ、Cookie認証をパスできるのは、IEにCookieが保存されているという前提ですので、
もしIEにCookieが保存されていない場合は、結局ログインが必要となります。
また、WinInet APIの振る舞いはIEのバージョンに依存するかもしれません。
APIの使用に慣れていなかったり、上記懸念を感じるのであれば、思いきって.netの方法でトライしてみては如何でしょうか?
■No29829に返信(ズッカさんの記事)

OpenReadではVB6のようにログインしたままの状態をアクセスするのは無理なんですね。
WinInet API は使ったことないですが、WinInet APIを使う方法、VB内でログインする方法、どちらも検討してみます。
ありがとうございました。
■No29870に返信(すぴかさんの記事)

できました。
InternetGetCookie で現在のyahooサイトの cookeiを取得し
CookieContainer の SetCookies でそのcookei をセット。
あとは、
http://www.atmarkit.co.jp/fdotnet/dotnettips/326cookie/cookie.html
にあるようような方法でできました。
ありがとうございます。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板