WebBrowserのNavigate関数を使用してWebサイトをロードしていますが、ブラウザに、指定したCookieを使用してページをロードさせたいです。
次のコードは機能しません。
wb.Navigate(url, null, null, "Cookie: " + cookie + "\n");
何が悪いのですか? InternetSetCookie を使用する必要がありますか?これは最善の解決策ではないようです。
より良い方法があるように見えます:
InternetSetCookie
関数をインポートします。
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool InternetSetCookie(string lpszUrlName, string lpszCookieName, string lpszCookieData);
Cookie
オブジェクトを作成します。
Cookie temp1 = new Cookie("KEY1", "VALUE1", "/Path/To/My/App", "/");
InternetSetCookie
関数を呼び出して、そのURLのCookieを設定します
InternetSetCookie("https://my.url.com/Path/To/My/App", null, temp1.ToString() + "; expires = Sun, 01-Jan-2013 00:00:00 GMT");
Navigate
WebBrowser
に移動するURLを指定します。
webBrowser1.Navigate("https://my.url.com/Path/To/My/App");
これが問題の最善の解決策だと思います:)。
適切な方法はInternetSetCookieExを使用することです。
[DllImport("wininet.dll")]
static extern InternetCookieState InternetSetCookieEx(
string lpszURL,
string lpszCookieName,
string lpszCookieData,
int dwFlags,
int dwReserved);
enum InternetCookieState : int
{
COOKIE_STATE_UNKNOWN = 0x0,
COOKIE_STATE_ACCEPT = 0x1,
COOKIE_STATE_Prompt = 0x2,
COOKIE_STATE_LEASH = 0x3,
COOKIE_STATE_DOWNGRADE = 0x4,
COOKIE_STATE_REJECT = 0x5,
COOKIE_STATE_MAX = COOKIE_STATE_REJECT
}
HTTPヘッダーを表示するWebサイト でテストするためのコードを次に示します。
InternetSetCookieEx("http://request.urih.com/", null, "TestData=Test;", 0, 0);
webBrowser1.Navigate("http://request.urih.com/");