Je n'arrive pas à trouver quelque sorte de définir un cookie par programmation à l'aide de WebEngine / WebView dans JavaFX. L'API ne donne aucune idée de la façon d'obtenir un HttpRequest-comme l'objet de modifier les en-têtes (qui est ce que j'utilise dans l'application de XML-RPC), ou toute sorte de gestionnaire de cookies.
Pas de questions sur cette page, semblent toucher sur la question soit - il est présent mais il désactive les cookies lorsque dans l'applet pour corriger un bug, mon application est sur le bureau btw.
La seule façon que j'image que je pouvais faire c'est en demandant la première page (qui nécessite un cookie avec un id de session pour charger correctement), l'obtention d'un "accès refusé"de style de message, de l'exécution du javascript dans le contexte de la page qui définit le cookie et l'actualisation. Cette solution serait une horrible expérience utilisateur bien.
Comment puis-je définir un cookie à l'aide de WebEngine?
Mise à jour: Prendre un indice à partir d'une question liée ci-dessus, j'ai essayé de creuser autour pour quelques exemples d'utilisation de CookieManager et des interfaces Api. J'ai trouvé ce code, que j'ai ensuite essayé de l'intégrer dans mon application, avec des résultats bizarres;
MyCookieStore cookie_store = new MyCookieStore();
CookieManager cookie_manager = new CookieManager(cookie_store, new MyCookiePolicy());
CookieHandler.setDefault(cookie_manager);
WebView wv = new WebView();
Maintenant, disons-nous faire ceci:
String url = "http://www.google.com/";
wv.getEngine.go(url);
Débogage dans Eclipse après cette demande a été faite montre que la banque de cookies carte est titulaire d'un cookie:
{http://www.google.com/=[NID=67=XWOQNK5VeRGEIEovNQhKsQZ5-laDaFXkzHci_uEI_UrFFkq_1d6kC-4Xg7SLSB8ZZVDjTUqJC_ot8vaVfX4ZllJ2SHEYaPnXmbq8NZVotgoQ372eU8NCIa_7X7uGl8GS, PREF=ID=6505d5000db18c8c:FF=0:TM=1358526181:LM=1358526181:S=Nzb5yzBzXiKPLk48]}
C'EST GÉNIAL
WebEngine utilise simplement le sous-jacent enregistré cookie moteur! Mais attendez, est-il vraiment? Que diriez-vous de l'ajout d'un cookie, avant de faire la demande...
cookie_store.add(new URL(url).toURI(), new HttpCookie("testCookieKey", "testCookieValue"));
Ensuite, je regarde à la demande dans Wireshark...
GET / HTTP/1.1
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/535.14 (KHTML, like Gecko) JavaFX/2.2 Safari/535.14
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Cache-Control: no-cache
Pragma: no-cache
Host: www.google.com
Connection: keep-alive
Pas de cookie pour moi :(
Ce que je fais mal?