URL връзка с бисквитки?

Опитвам се да направя URL връзка, която поддържа бисквитки. Според документацията мога да използвам:

CookieManager cookieManager = new CookieManager();
CookieHandler.setDefault(cookieManager);

Не можах да накарам този код да работи, след което видях, че това работи само за API 9 (2.3). Въпреки това не получавам грешка при използване на CookieManager в по-стар емулатор, CookieManager съществува, но не може да бъде конструиран. Има ли някакъв начин това да работи за по-ранни версии? Опитах:

            cookieManager.setAcceptCookie(true);
            URLConnection con = u.openConnection();

            con.setRequestProperty("Cookie", cookieManager.getInstance().getCookie(url););
            con.setDoOutput(true);
            con.connect();
            String addCookie = con.getHeaderField("Set-Cookie");
            System.out.println(con.getHeaderFields().toString());
            if (addCookie!=null) {
                cookieManager.getInstance().setCookie(url, addCookie);
            }

но това не работи.


person NoBugs    schedule 15.06.2011    source източник
comment
В този случай вие сте клиент или сървър? Ако вие сте клиент, защо използвате заглавката Set-Cookie?   -  person Vineet Reynolds    schedule 15.06.2011
comment
Този клиент чете това, изпратено е от сървъра. curl.haxx.se/rfc/cookie_spec.html   -  person NoBugs    schedule 15.06.2011
comment
о, човече, ти спаси живота ми... не отговорът, а въпросът ти... благодаря ти много   -  person iAmLearning    schedule 10.01.2014
comment
@SushilKumar Как имаш предвид?   -  person NoBugs    schedule 11.01.2014


Отговори (1)


Успях да активирам бисквитките с помощта на класа CookieManager на Ian Brown: http://www.hccp.org/java-net-cookie-how-to.html

Преименувах го на IansCookieManager, зададох променлива на класа _CM = new IansCookieManager, сега е просто:

            URLConnection conn = u.openConnection();
            _CM.setCookies(conn);
            conn.connect();
            _CM.storeCookies(conn);
            ... 
person NoBugs    schedule 15.06.2011
comment
Това е доста добър и основен мениджър на бисквитки. Харесва ми. Също така намирам за странно, че на инженерите на Android им отне толкова време, за да включат класа java.net.CookieManager. И в двата случая вярвам, че и двата класа (на Ian и този на java.net) съхраняват бисквитките само временно (т.е. те ще се съхраняват само докато процесът на кандидатстване бъде убит). Така че е напълно възможно следващия път, когато потребителят стартира приложението, да трябва да влезе отново/и т.н.? - person Tony Chan; 02.08.2012
comment
Вярно е, освен ако не сте сериализирали класа и сте го запазили някъде. Освен това напускането и връщането към приложението не е достатъчно за „изход“ от приложението, така че бисквитките и сесията на браузъра трябва да бъдат запазени. - person NoBugs; 02.08.2012
comment
Точно така, потребителят ще трябва да направи някои неща, които отнемат много памет между тях, за да накара системата да убие процеса на приложението. Сериализиране на класа за управление на бисквитки е добра идея. Вероятно най-добре е да го запишете във вътрешната памет с помощта на openFileOutput()? В момента използвам наистина основен метод, при който запазвам само бисквитката за една сесия, която ми се връща като String в SharedPreferences. Мисля обаче, че сега ще опитам да използвам този сериализиращ се мениджър на бисквитки. - person Tony Chan; 03.08.2012