2011-11-22 14 views
5

que he hecho esta muestra para tratar de entender por qué no estoy enviando las cookies en absoluto con mi WebBrowser, es bastante simple, la forma tiene un WebBrowser en él, eso es todo:¿Por qué este código que utiliza InternetSetCookie para establecer cookies en un control WebBroser no funciona?

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

Y eso es lo Fidller dice que estoy enviando:

enter image description here

Parece que todo el mundo el uso de esta función tiene éxito, pero para la vida de mí que no puede conseguir que funcione. Lo intenté en diferentes computadoras y falla allí también. Cualquier ayuda será genial, gracias.

Respuesta

1

Lo encontré, el problema no fue comprobar el resultado de la operación. www.nonexistent.com no es un URI válido, tiene que ser http://www.nonexistent.com

4

Me acabo de enterar de esto mismo. Para completar, debe verificar el valor devuelto por InternetSetCookie y si es falso, llame a GetLastError que le habría dado un código de retorno de 87 - parámetro no válido.

es decir

[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

Gracias por la explicación. –

Cuestiones relacionadas