2012-05-15 17 views
12

Android CookieManager वर्ग के लिए एक विधि है - getCookie(String url)
इसके लिए हमें सही यूआरएल जानने की जरूरत है।
वहाँ एक रास्ता CookieManager में सभी कुकी हो और यूआरएल पाने के लिए है। कुछ चीज जैसे getCookies ?? सिर्फ दोगुना करने के लिए यह वह जगह है की जाँच करता है, तो मैं अपने url के लिए getCookie(String url) कॉल में कुछ भी गलत दे रहा हूँ। जब मैं इसे कॉल करता हूं तो मुझे कुकी नहीं मिल रही है।
मैं यूआरएल में पूर्ण IP address पास कर रहा हूं। कुछ इस तरह: "xx.x.x.x"कुकी मैनेजर एंड्रॉइड से सभी कुकीज़ कैसे प्राप्त करें?

धन्यवाद
मिया

+0

मैं सफल login- अपनी साधारण के बाद वेबव्यू से कुकी को निकालने के लिए कोशिश कर रहा हूँ - स्ट्रिंग cookieString = CookieManager.getInstance() getCookie ("xx.xxx); – mia

उत्तर

0

आप use reflection कुकी नक्शे को देखने के लिए कर सकते हैं। इसे 4.0.3 में mCookieMap कहा जाता है (और शायद पहले रिलीज़ में भी)। प्रकार मानचित्र है>।

यह ऐसा करने का एक शानदार तरीका नहीं है क्योंकि यदि आप mCookieMap का उपयोग नहीं करते हैं तो आप अलग-अलग डिवाइस या ओएस संस्करणों पर तोड़ने का जोखिम उठाएंगे, लेकिन कुकी मैनेजर यह जानने का सार्वजनिक तरीका नहीं देता है कि यह किस URL का दौरा किया गया है।

+0

4.2 में कुकीज़। .2 को मूल रूप से संग्रहीत किया जाता है, इसलिए यह काम नहीं करेगा: http://androidxref.com/4.2.2_r1/xref/frameworks/base/core/java/android/webkit/CookieManagerClassic.java – plinehan

+1

मुझे पता था कि यह अंततः टूट जाएगा। :-) –

3

मैं अपने Android आवेदन में java.net पैकेज के साथ CookieManager इस्तेमाल किया है और यह एक आकर्षण की तरह काम करता है। कोड स्निपेट है:

import java.net.CookieHandler; 
import java.net.CookieManager; 
import java.net.CookiePolicy; 
import java.net.HttpCookie; 
import java.util.List; 

private class MyCookieManager 
{  
    private CookieManager mCookieManager = null; 

    MyCookieManager() { 
     mCookieManager = new CookieManager(); 
     mCookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL); 
     CookieHandler.setDefault(mCookieManager); 
    } 

    private List<HttpCookie> getCookies() { 
     if(mCookieManager == null) 
      return null; 
     else 
      return mCookieManager.getCookieStore().getCookies(); 
    } 

    public void clearCookies() { 
     if(mCookieManager != null) 
      mCookieManager.getCookieStore().removeAll(); 
    } 

    public boolean isCookieManagerEmpty() { 
     if(mCookieManager == null) 
      return true; 
     else 
      return mCookieManager.getCookieStore().getCookies().isEmpty(); 
    } 


    public String getCookieValue() { 
     String cookieValue = new String(); 

     if(!isCookieManagerEmpty()) { 
      for (HttpCookie eachCookie : getCookies()) 
       cookieValue = cookieValue + String.format("%s=%s; ", eachCookie.getName(), eachCookie.getValue()); 
     } 

     return cookieValue; 
    } 

} 
+0

@stan जब मैं getCookieValue() का उपयोग करना चाहता हूं, तो मुझे MyCookieManager क्लास का ऑब्जेक्ट बनाना होगा और कन्स्ट्रक्टर को कॉल किया जाएगा और हर बार कुकी मैनेजर का नया इंस्टेंट कोई कुकी सहेजे बिना उत्पन्न नहीं होगा। मैं कुकी को कैसे पुनर्प्राप्त कर सकता हूं डिफ़ॉल्ट कुकी मैनेजर जहां मैंने पहले कुकी संग्रहीत की थी? –

+0

@ हरशलबाह, ऐसा माना जाता है कि आप अपने आवेदन में 'MyCookieManager' का एक उदाहरण बनाते और रखते हैं। वैसे भी, सभी उदाहरणों को आम तौर पर डिफ़ॉल्ट कुकी स्टोर से कुकीज़ का एक ही सेट वापस करना चाहिए (या एक कस्टम स्टोर यदि आप 'कुकी प्रबंधक' कन्स्ट्रक्टर में विशिष्ट स्टोर प्रदान करने के लिए स्रोत बदल देंगे)। – Stan

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