2011-11-22 10 views
5

Zrobiłem tę próbkę, aby spróbować zrozumieć, dlaczego nie jestem wysyłania plików cookie w ogóle z moim WebBrowser, to całkiem proste, forma ma WebBrowser na to, że wszystko:Dlaczego ten kod przy użyciu InternetSetCookie do ustawiania plików cookie w formancie WebBroser nie działa?

namespace BrowserTest 
{ 
    public partial class Form1 : Form 
    { 
     [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] 
     private static extern bool InternetSetCookie(string url, string name, string data); 

     public static bool SetWinINETCookieString(string url, string name, string data) 
     { 
      return Form1.InternetSetCookie(url, name, data); 
     } 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      // None of two works 
      //SetWinINETCookieString("www.nonexistent.com", null, "dataToTest=thisIsTheData"); 
      SetWinINETCookieString("www.nonexistent.com", "dataToTest", "thisIsTheData"); 
      this.webBrowser1.Navigate("www.nonexistent.com"); 
     } 
    } 
} 

i to, co Fidller mówi wyślę:

enter image description here

Wygląda jak wszyscy użyciem tej funkcji powiedzie się, ale dla życia mnie, że nie mogę dostać pracy. Próbowałem na różnych komputerach i tam też się nie udało. Każda pomoc będzie wspaniała, dzięki.

Odpowiedz

1

Znalazłem, problem nie polegał na sprawdzeniu wyniku operacji. www.nonexistent.com nie jest prawidłowym identyfikatorem URI, musi to być http://www.nonexistent.com

4

Natknąłem się na to sam. Aby uzyskać kompletność, musisz sprawdzić wartość zwróconą przez InternetSetCookie, a jeśli jest ona nieprawidłowa, wywołaj GetLastError, który dałby ci kod powrotu 87 - nieprawidłowy parametr.

tj

[DllImport("kernel32.dll")] 
public static extern uint GetLastError(); 

......

bool ok = SetWinINETCookieString("www.nonexistent.com", "dataToTest", "thisIsTheData"); 
if (!ok) 
{ 
    int errorCode = GetLastError(); //this will return 87 for www.nonexistent.com 
} 
+0

Dzięki za wyjaśnienie. –

Powiązane problemy