Définition d'un cookie dans un contrôle WebBrowser

Je charge un site Web en utilisant la fonction de navigation D'un navigateur web, et je veux que le navigateur charge la page avec un cookie que je lui ai donné.

Le code suivant ne fonctionne pas:

wb.Navigate(url, null, null, "Cookie: " + cookie + "n");

Qu'est-ce que je fais de mal? Dois-je utiliser InternetSetCookie? Cela ne semble pas être la meilleure solution.

22
demandé sur John Saunders 2010-05-14 01:55:52

2 réponses

On dirait qu'il y a un meilleur moyen:

Importer la fonction InternetSetCookie:

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

Créez l'objet Cookie:

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

Appelez la fonction InternetSetCookie pour définir le cookie pour cette URL

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

Navigate le WebBrowser à l'URL que vous souhaitez aller.

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

Pense que c'est la meilleure solution pour le problème :).

20
répondu Kiran Madipally 2015-05-23 16:49:42

La bonne façon est D'utiliser 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
} 

Voici du code pour le tester sur un site web qui affiche vos en-têtes HTTP.

InternetSetCookieEx("http://request.urih.com/", null, "TestData=Test;", 0, 0);
webBrowser1.Navigate("http://request.urih.com/");
3
répondu Zachafer 2015-11-30 08:24:29