¿Hay alguna forma de que pueda utilizar las cookies de un contenedor de cookies (tomado de una WebRequest anteriormente) y usarlas en un control WebBrowser? Si es así, ¿cómo haría esto? Esto es para una aplicación Winforms en C#.Usar cookies de CookieContainer en WebBrowser
10
A
Respuesta
9
Necesita hacer uso de InternetSetCookie. Aquí es una sample ...
public partial class WebBrowserControl : Form
{
private String url;
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);
public WebBrowserControl(String path)
{
this.url = path;
InitializeComponent();
// set cookie
InternetSetCookie(url, "JSESSIONID", Globals.ThisDocument.sessionID);
// navigate
webBrowser.Navigate(url);
}
}
4
He aquí un ejemplo oh cómo esto podría lograrse:
private class CookieAwareWebClient : WebClient
{
public CookieAwareWebClient()
{
CookieContainer = new CookieContainer();
}
public CookieContainer CookieContainer { get; private set; }
protected override WebRequest GetWebRequest(Uri address)
{
var request = base.GetWebRequest(address);
var httpRequest = request as HttpWebRequest;
if (httpRequest != null)
{
httpRequest.CookieContainer = CookieContainer;
}
return request;
}
}
private void Form1_Load(object sender, EventArgs e)
{
using (var client = new CookieAwareWebClient())
{
client.Proxy.Credentials = CredentialCache.DefaultNetworkCredentials;
client.DownloadData("http://www.google.com");
var cookies = client.CookieContainer.GetCookies(new Uri("http://www.google.com"));
var prefCookie = cookies["PREF"];
webBrowser1.Navigate("http://www.google.com", "", null, "Cookie: " + prefCookie.Value + Environment.NewLine);
}
}
1
Trate de primer uso "cliente" CookedWebClient por primera navitation y obtener todas las cookies de servidor . A continuación, puede tomar la CookedContainer de CookedWebClient, o alguna otra fuente, como WebRequest, y utilizarlos en WebBrowser como se muestra a continuación:
namespace ExampleWebBrowser
{
public partial class Form1 : Form
{
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);
CookedWebClient client = new CookedWebClient();
..
..
..
private void usingWebBrowserWithWebClientCookies(string url)
{
CookieCollection cookies = client.Cookies.GetCookies(url);
for (int i = 0; i < cookies.Count; i++)
{
Cookie c = cookies[i];
InternetSetCookie(url, c.Name, c.Value);
}
webBrowser1.Navigate(url);
}
}
public class CookedWebClient : WebClient
{
CookieContainer cookies = new CookieContainer();
public CookieContainer Cookies { get { return cookies; } }
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
if (request.GetType() == typeof(HttpWebRequest))
((HttpWebRequest)request).CookieContainer = cookies;
return request;
}
}
}
Cuestiones relacionadas
- 1. Envío de cookies usando HttpCookieCollection y CookieContainer
- 2. Posible hacer que el control WebBrowser comparta cookies con HttpWebRequest?
- 3. ¿Administrando cookies en un control WPF WebBrowser?
- 4. CookieContainer error?
- 5. ¿Cómo insertar CookieCollection en CookieContainer?
- 6. Cómo eliminar las cookies de dominio en virtud de 1 CookieContainer
- 7. ¿Qué clase .NET analiza una cadena de cookies HTTP múltiple en un CookieCollection o CookieContainer?
- 8. C# WebRequest usar WebBrowser, galletas
- 9. Usar imágenes locales en el control Webbrowser
- 10. CookieContainer manejo de rutas (¿Quién comió mi cookie?)
- 11. ¿Cuál es la diferencia entre CookieContainer y la colección Response.Cookies?
- 12. cómo usar cookies con HttpWebRequest
- 13. en iOS: ¿puedes usar cookies/sesión?
- 14. cómo sobrescribir/usar cookies en scrapy
- 15. ¿Cómo agregar cookies a WebRequest?
- 16. C#: Escribir un CookieContainer en disco y carga de nuevo en Para uso
- 17. Cómo configurar y eliminar cookies del control WebBrowser para dominios arbitrarios
- 18. .NET HTTP POST Method - Número de cookies
- 19. Cómo usar el control WebBrowser Evento DocumentCompleted en C#?
- 20. WCF Web Service Client utilizando un CookieContainer
- 21. ¿Cookies de sesión = cookies?
- 22. .htaccess, YSlow, y "Usar dominios sin cookies"
- 23. ¿Cómo se pueden usar cookies con superagente?
- 24. Desactivar F5 en WebBrowser
- 25. ¿Cómo puedo obtener las cookies de HttpClientHandler.CookieContainer
- 26. cómo usar las cookies en HttpsURLConnection en android
- 27. HttpWebRequest Cookies no configuradas
- 28. Navegación y control WebBrowser
- 29. Problema de memoria WebBrowser
- 30. Problemas para compartir CookieContainer entre HttpWebRequests en Windows Phone 7 (Mango)
ya tengo el contenedor de galletas y las galletas en su interior, lo que necesito ahora es para usar esas cookies con un control webBrowser, pero no estoy seguro de cómo puedo usarlas en él. Lo que me enviaste solo muestra cómo obtener las cookies, pero no describe cómo configurarlas en un navegador. – Alex
@Alex, se agregaron comentarios adicionales ... –
Esa es la cuestión. No lo necesito para una webrequest. Lo necesito para un WebBrowser. – Alex