Y a-t-il un moyen pour que je puisse réellement utiliser les cookies d'un conteneur de cookies (provenant d'une demande de WebRequest) et les utiliser dans un contrôle WebBrowser? Si oui, comment ferais-je cela? C'est pour une application Winforms en C#.Utiliser les cookies de CookieContainer dans WebBrowser
10
A
Répondre
9
Vous devez utiliser InternetSetCookie. Voici un 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
Voici un exemple oh comment cela pourrait être réalisé:
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
Essayez de la première utilisation « client » CookedWebClient pour la première navitation et obtenir tous les cookies de serveur . Ensuite, vous pouvez prendre la CookedContainer de CookedWebClient ou d'une autre source comme WebRequest, et les utiliser dans WebBrowser comme indiqué ci-dessous:
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;
}
}
}
Questions connexes
- 1. Cookies WPF WebBrowser à utiliser dans WebRequest
- 2. Écrire des cookies de CookieContainer au magasin de cookies IE
- 3. Envoi de cookies à l'aide de HttpCookieCollection et de CookieContainer
- 4. Cookies persistants dans le contrôle WPF WebBrowser?
- 5. contrôle webbrowser multiple, cookies séparés?
- 6. httpwebrequest Cookiecontainer
- 7. Bogue CookieContainer?
- 8. Comment insérer CookieCollection à CookieContainer?
- 9. Contrôle C# WebBrowser: effacement du cache sans effacer les cookies
- 10. Quelle classe .NET analyse une chaîne de cookies HTTP multiples dans un CookieCollection ou un CookieContainer?
- 11. Utilisation de CookieContainer avec la classe WebClient
- 12. comment utiliser les cookies avec HttpWebRequest
- 13. Accès aux cookies à partir du contrôle Webbrowser
- 14. CookieContainer et WebServices
- 15. comment puis-je utiliser les cookies informations dans flex3
- 16. Comment utiliser les mêmes cookies dans plusieurs requêtes en python?
- 17. Besoin d'aide pour utiliser WebBrowser
- 18. CookieContainer gestion des chemins (Qui a mangé mon cookie?)
- 19. C# webRequest utilisant cookies
- 20. Des cookies sont requis pour utiliser ce site. HttpWebRequest/HttpWebResponse Cookies
- 21. Windows Phone 7 effacer les cookies
- 22. Vérifiez les cookies dans asp.net
- 23. Effacement des cookies du contrôle WebBrowser pour tous les sites SANS correction pour IE lui-même
- 24. Utiliser PHPUnit pour tester les cookies et les sessions, comment?
- 25. Meilleur moyen d'enregistrer des cookies dans C# .NET?
- 26. surfer avec le même CookieContainer
- 27. Cookies serveur?
- 28. HttpWebRequest perte de cookies
- 29. Effacer les cookies dans Android
- 30. Chiffrer les cookies dans ASP.NET
J'ai déjà le conteneur à biscuits et les biscuits à l'intérieur, ce que je dois maintenant pour utiliser ces cookies avec un contrôle webBrowser, mais je ne suis pas sûr de savoir comment je peux les utiliser à l'intérieur. Ce que vous m'avez envoyé montre juste comment en sortir les cookies, mais ne décrit pas comment les mettre dans un navigateur. – Alex
@Alex, ajouté des commentaires supplémentaires ... –
Thats la chose. Je n'en ai pas besoin pour un webrequest. J'en ai besoin pour un WebBrowser. – Alex