2011-06-15 10 views
20

मैं कुकीज़ का समर्थन करने वाला URL कनेक्शन बनाने की कोशिश कर रहा हूं। प्रलेखन के अनुसार मैं उपयोग कर सकते हैं:यूआरएल कनेक्शन?

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

मैं इस कोड काम करने के लिए नहीं मिल सका, तो मैं एपीआई 9 (2.3) के लिए यह केवल काम करता है देखा। हालांकि, मुझे पुराने एमुलेटर में कुकी मैनेजर का उपयोग करके कोई त्रुटि नहीं मिली है, कुकी मैनेजर मौजूद है, लेकिन इसका निर्माण नहीं किया जा सकता है। क्या इस काम को पिछले संस्करणों के लिए बनाने का कोई तरीका है? मैंने कोशिश की:

  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); 
      } 

लेकिन यह काम नहीं करता है।

+0

आप कर रहे हैं इस मामले में ग्राहक या सर्वर? यदि आप ग्राहक हैं, तो आप 'सेट-कुकी' हेडर का उपयोग क्यों कर रहे हैं? –

+0

यह क्लाइंट इसे पढ़ता है, यह सर्वर द्वारा भेजा जाता है। http://curl.haxx.se/rfc/cookie_spec.html – NoBugs

+0

ओह आदमी आपने अपना जीवन बचाया ... जवाब नहीं बल्कि आपका प्रश्न ... धन्यवाद एक loooooooooooooooottttttttttttttttttttttttt – iAmLearning

उत्तर

14

मैं इयान ब्राउन के CookieManager वर्ग का उपयोग कर कुकीज़ सक्षम करने में सक्षम था: एक वर्ग चर _CM = नए IansCookieManager सेट http://www.hccp.org/java-net-cookie-how-to.html

मैं IansCookieManager को रखा, अब यह आसान है:

  URLConnection conn = u.openConnection(); 
      _CM.setCookies(conn); 
      conn.connect(); 
      _CM.storeCookies(conn); 
      ... 
+2

यह एक बहुत अच्छा और बुनियादी कुकी प्रबंधक है। मुझें यह पसंद है। मुझे यह भी अजीब लगता है कि एंड्रॉइड इंजीनियरों ने इसे 'java.net.CookieManager' कक्षा' शामिल करने में लंबा लगा। किसी भी मामले में, मेरा मानना ​​है कि दोनों वर्ग (इयान और java.net एक) केवल अस्थायी रूप से कुकीज़ संग्रहीत करते हैं (यानी उन्हें केवल तब तक रखा जाएगा जब तक कि एप्लिकेशन प्रक्रिया मारे नहीं जाती)। तो अगली बार जब उपयोगकर्ता ऐप लॉन्च करता है तो यह काफी संभव है, उन्हें फिर से लॉगिन करने की आवश्यकता होगी? –

+2

सच है, जब तक कि आपने कक्षा को क्रमबद्ध नहीं किया और इसे कहीं से बचाया। साथ ही, ऐप पर वापस जाने और वापस आने के लिए ऐप से बाहर निकलने के लिए पर्याप्त नहीं है, इसलिए कुकीज़ और ब्राउज़र सत्र संरक्षित किया जाना चाहिए। – NoBugs

+0

सही, उपयोगकर्ता को ऐप प्रक्रिया को मारने के लिए सिस्टम को प्राप्त करने के बीच में कुछ स्मृति गहन सामग्री करना होगा। कुकी प्रबंधन वर्ग को सीरियलाइज करना एक अच्छा विचार है। संभवतः ['openFileOutput()'] (http://developer.android.com/reference/android/content/Context.html#openFileOutput%28java.lang.String,%20int%29) का उपयोग करके आंतरिक संग्रहण में लिखना सबसे अच्छा है। ? अभी मैं वास्तव में एक मूलभूत विधि का उपयोग करता हूं जहां मैं केवल एक सत्र कुकी कुकी सहेजता हूं जो मुझे 'साझाकरण' में 'स्ट्रिंग' के रूप में वापस लौटाया जाता है। मुझे लगता है कि मैं अब इस धारावाहिक कुकी प्रबंधक का उपयोग करने की कोशिश कर रहा हूँ। –

संबंधित मुद्दे