Ustawianie pliku cookie za pomocą WebEngine JavaFX / WebView

Wydaje mi się, że nie mogę znaleźć żadnego sposobu programowego używania cookieWebEngine / WebView w JavaFX. Interfejs API nie daje żadnego pojęcia, jak uzyskać obiekt podobny do HttpRequest, aby zmodyfikować nagłówki (co jest tym, czego używam w aplikacji dla XML-RPC), lub jakikolwiek menedżer plików cookie.

Żadne pytania na tej stronie również nie dotykają tej kwestii - jestto ale po prostu wyłącza ciasteczka, gdy aplet naprawiapluskwa, moja aplikacja jest na pulpicie btw.

Jedynym sposobem, w jaki mogę to zrobić, jest zażądanie pierwszej strony (która wymaga pliku cookie z identyfikatorem sesji, aby załadować się poprawnie), otrzymanie komunikatu w stylu „odmowa dostępu”, wykonanie javascript w kontekście strony, który ustawia plik cookie i potem odświeżający. To rozwiązanie byłoby jednak okropnym doświadczeniem użytkownika.

Jak ustawić plik cookie za pomocą WebEngine?

Aktualizacja: Biorąc pod uwagę wskazówkę związaną z powyższym pytaniem, spróbowałem znaleźć kilka przykładów użyciaCookieManager i powiązane API.Znalazłem ten kod, które następnie próbowałem włączyć do mojej aplikacji, z dziwnymi wynikami;

MyCookieStore cookie_store = new MyCookieStore();
CookieManager cookie_manager = new CookieManager(cookie_store, new MyCookiePolicy());
CookieHandler.setDefault(cookie_manager);
WebView wv = new WebView();

Teraz powiedzmy, że to robimy:

String url = "http://www.google.com/";
wv.getEngine.go(url);

Debugowanie w Eclipse po wykonaniu tego żądania pokazuje, że mapa sklepu z ciasteczkami zawiera plik 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]}
TO JEST NIESAMOWITE

WebEngine po prostu używa bazowego zarejestrowanego silnika plików cookie! Ale poczekaj, czy to naprawdę? Spróbujmy dodać plik cookie przed złożeniem żądania ...

cookie_store.add(new URL(url).toURI(), new HttpCookie("testCookieKey", "testCookieValue"));

Potem patrzę na prośbę w 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

Brak dla mnie ciasteczka :(

Co ja robię źle?

questionAnswers(2)

yourAnswerToTheQuestion