2011-11-22 9 views
5

Ho fatto questo esempio per cercare di capire il motivo per cui io non sono l'invio di tutti i cookie con il mio browser web, è abbastanza semplice, la forma ha un browser web su di esso, questo è tutto:Perché questo codice che utilizza InternetSetCookie per impostare i cookie su un controllo WebBroser non funziona?

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"); 
     } 
    } 
} 

E questo è quello che Fidller dice che mando:

enter image description here

Sembra che tutti utilizzare questa funzione ha esito positivo, ma per la vita di me non riesco a farlo funzionare. Ho provato su diversi computer e anche lì non funziona. Qualsiasi aiuto sarà grande, grazie.

risposta

1

L'ho trovato, il problema non era controllare il risultato dell'operazione. www.nonexistent.com non è un URI valido, deve essere http://www.nonexistent.com

4

Mi sono appena imbattuto in questo. Per completezza, è necessario controllare il valore restituito da InternetSetCookie e, se falso, chiamare GetLastError che ti avrebbe dato un codice di ritorno di 87 - parametro non valido.

cioè

[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

Grazie per la spiegazione. –

Problemi correlati