Setting a cookie in a WebBrowser control

前端 未结 2 377
清歌不尽
清歌不尽 2020-11-30 06:58

I am loading a website using a WebBrowser\'s Navigate function, and I want the browser to load the page with a cookie I\'ve given it.

The following code doesn\'t wor

相关标签:
2条回答
  • 2020-11-30 07:10

    The proper way is using 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
    } 
    

    Here's some code to test it at a website that shows your HTTP headers.

    InternetSetCookieEx("http://request.urih.com/", null, "TestData=Test;", 0, 0);
    webBrowser1.Navigate("http://request.urih.com/");
    
    0 讨论(0)
  • 2020-11-30 07:14

    Looks like there is a better way:

    Import the InternetSetCookie function:

    [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
    static extern bool InternetSetCookie(string lpszUrlName, string lpszCookieName, string lpszCookieData);
    

    Create the Cookie object:

    Cookie temp1 = new Cookie("KEY1", "VALUE1", "/Path/To/My/App", "/");
    

    Call InternetSetCookie function to set the cookie for that URL

    InternetSetCookie("https://my.url.com/Path/To/My/App", null, temp1.ToString() + "; expires = Sun, 01-Jan-2013 00:00:00 GMT");
    

    Navigate the WebBrowser to the URL you would like to go to.

    webBrowser1.Navigate("https://my.url.com/Path/To/My/App");
    

    Think this is the best solution for the issue :).

    0 讨论(0)
提交回复
热议问题