C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: WebBrowserよりCookieを取得してファイルをDL


(過去ログ 101 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■60603 / inTopicNo.1)  WebBrowserよりCookieを取得してファイルをDL
  
□投稿者/ おっぷ (1回)-(2011/07/12(Tue) 13:11:07)

分類:[VB.NET/VB2005 以降] 

VB2008・WinFormアプリケーションを開発中です。
アプリケーション上のWebBrowserに表示されている画像のダウンロードを行うため、
WebClientで画像のURLを送信して画像のダウンロードを試みようとしてつまずいています。

WebBrowser上のドキュメントから<IMG>タグのHtmlElementを取り出し、
このSRC属性のURLを取得するところまでは出来たのですが、
該当サイトはCookieで制御されているため、単にWebClientで該当URLにアクセス
しても正しくダウンロードができません。
(Cookieを有効にしてくださいというようなエラーのHTMLが返される。)

Cookieを使ってダウンロードを行う方法は、以下のサイトに掲載されていますが、
WebBrowserから現在のページのCookieの内容を取得する方法はあるのでしょうか?

http://dobon.net/vb/dotnet/internet/usecookie.html

よろしくお願いします。
引用返信 編集キー/
■60604 / inTopicNo.2)  Re[1]: WebBrowserよりCookieを取得してファイルをDL
□投稿者/ 魔界の仮面弁士 (2244回)-(2011/07/12(Tue) 13:39:11)
No60603 (おっぷ さん) に返信
> WebBrowserから現在のページのCookieの内容を取得する方法はあるのでしょうか?
一応、InternetGetCookie(Ex) および IEGetProtectedModeCookie API という物がありますね。
http://msdn.microsoft.com/en-us/library/aa384714.aspx
http://support.microsoft.com/kb/196062/ja (← VB6 用コード)

あるいは、ローカルプロキシを挟んで HTTP ヘッダを読み取ってみるとか。
http://msdn.microsoft.com/en-us/library/bb250446.aspx
引用返信 編集キー/
■60605 / inTopicNo.3)  Re[1]: WebBrowserよりCookieを取得してファイルをDL
□投稿者/ todo (157回)-(2011/07/12(Tue) 14:21:46)
> WebBrowserから現在のページのCookieの内容を取得する方法はあるのでしょうか?

WebBrowser.Document.Cookieでクッキー文字列を取得して、
WebClient.Headers.Add("Cookie", クッキー文字列)で渡すとか。
ただし、クッキー文字列は何らかな変換が必要かも。
引用返信 編集キー/
■60610 / inTopicNo.4)  Re[2]: WebBrowserよりCookieを取得してファイルをDL
□投稿者/ 逆運の覇者 (26回)-(2011/07/12(Tue) 16:59:42)
WebClientでCookieを食べる答えとして以下のようなものがありました。

    public class CookieAwareWebClient : WebClient
    {
        private CookieContainer m_container = new CookieContainer();

        protected override WebRequest GetWebRequest(Uri address)
        {
            WebRequest request = base.GetWebRequest(address);
            if (request is HttpWebRequest)
            {
                (request as HttpWebRequest).CookieContainer = m_container;
            }
            return request;
        }
    }

CookieAwareWebClientにあるCookieをWebBrowserに渡すには、

  m_container.CookieContainer.SetCookies(uri, webBrowser1.Document.Cookie);

とすればできそうです。
私は試していませんので悪しからず。

引用返信 編集キー/
■60648 / inTopicNo.5)  Re[3]: WebBrowserよりCookieを取得してファイルをDL
□投稿者/ おっぷ (2回)-(2011/07/13(Wed) 15:21:45)
みなさま、ご回答ありがとうございました。
とりあえず、WebBrowserのDocument.Cookieを利用することにしました。
ところで、逆運の覇者さまの

> CookieAwareWebClientにあるCookieをWebBrowserに渡すには、

は、WebBrowserにあるCookieをCookieAwareWebClientに渡すには、という理解で良いですか?
(とりあえず解決済みにしておきます。)
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -