2013-02-13 10 views
24

Java uygulamasına sahibim (JDK 1.7.0_13) ve oturum yönetimi yapan bazı servlet tabanlı servislere bağlanmak için java.net.HttpURLConnection özelliğini kullanıyorum. Oturum çerezlerini izlemek için java.net.CookieManager'ı nasıl kullanacağımı anlamaya çalışıyorum. Dokümanları okuyarak CookieManager'ı CookieHandler.setDefault (yeni CookieManager()) ile kurarak çerez yönetiminin otomatik olarak gerçekleşmesine neden olabileceği izlenimini edinirim. Bununla birlikte, aynı URL’lere yapılan birden çok istek, çerezleri korumaz gibi görünmüyor. Çerezleri el ile yanıtlardan alıp kendi isteğimle yeniden göndermek zorunda mıyım yoksa CookieManager bunu otomatik olarak benim için yapacak mı? CookieManager yoksa, o zaman hangi değeri ekler?CookieManager ile HttpURLConnection, oturum çerezlerini otomatik olarak işlemeli mi?

Öğeleri test etmek için, tarayıcımın URL'sini her ziyaret edişinde bir sayacı başarılı bir şekilde artıran bir sunucu uygulamasına sahibim. Bu, Safari, FireFox ve Chrome'dan iyi çalışıyor ... Ancak, tek başına bir Java uygulamasından çalışamıyorum.

Basit bir çalışma olmasını umduğum şeyi göstermek için çok basit bir test programı. CookieManager'ı başlangıçta kurar ve sonra konsolda URL'ler yazılırken art arda bir (String urlString) yöntemini çağırır.

Servletimi bu uygulamadan çağırmak, açıkça bir oturum çerezini sunucudan alır. Ancak, tekrar çağırmak yeni bir oturum çerezi alır.

> http://localhost:8080/brilliant/TestServlet 
Status = 200 
Headers-------start----- 
Server:Resin/4.0.34 
Cache-Control:private 
Set-Cookie:JSESSIONID=aaaMp0uKke4gp9_-nUuZt; path=/ 
Content-Length:19 
Date:Wed, 13 Feb 2013 18:02:31 GMT 
Headers-------end----- 
Content-------start----- 
Session count is 0 
Content-------end----- 
> http://localhost:8080/brilliant/TestServlet 
Status = 200 
Headers-------start----- 
Server:Resin/4.0.34 
Cache-Control:private 
Set-Cookie:JSESSIONID=aaaZ-oPaC1I9WdEDoUuZt; path=/ 
Content-Length:19 
Date:Wed, 13 Feb 2013 18:02:33 GMT 
Headers-------end----- 
Content-------start----- 
Session count is 0 
Content-------end----- 

Özetlemek gerekirse

, ben CookieManager benim için otomatik olarak çalışmasını sağlamak için başka bir şey yapmak zorunda mısın, yoksa elle yanıtları gelen çerezleri ayıklanması ve istekleri ile bunları yeniden göndermeyi başvurmak gerekiyor?

+0

http://stackoverflow.com/questions/12349266/how-do-i-persist-cookies-when-using-httpurlconnection/32001630#32001630 adresine gidin. Best en iyi çözüm geldi。 – hgg

cevap

55

Ben senin kod çalıştırmasına ve

CookieHandler.setDefault(new CookieManager(null, CookiePolicy.ACCEPT_ALL)); 

bu

CookieHandler.setDefault(new CookieManager()); 

İşe değiştirin!

+1

Teşekkürler. Zekice çalışır. Tabii ki, şimdi cevabı biliyorum, belgeleri bulmak kolay. ;-) – Chuck

+1

Genelde bulabileceğinizden daha güzel ve daha küçük bir yanıt. Teşekkürler! – Panayotis