2012-06-07 20 views
8

में कुकीज़ सबमिट करना संभव है। मैं अपने स्कूल के सर्वर से फ़ाइलों को डाउनलोड करने के लिए एंड्रॉइड DownloadManager एपीआई का उपयोग कर रहा हूं। मुझे इन फ़ाइलों को लॉगिन के साथ एक्सेस करने की अनुमति है, लेकिन मैं यह समझने में सक्षम नहीं हूं कि मेरे DownloadManager.Request के साथ कुकीज़ कैसे सबमिट करें, डाउनलोड कोड नीचे है। dm एक वैश्विक DownloadManager है, और url एक PHP डाउनलोड स्क्रिप्ट है जो एक फ़ाइल, आमतौर पर पीडीएफ/डॉक्टर/आदि पर रीडायरेक्ट करता है।क्या एंड्रॉइड डाउनलोड मैनेजर

dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); 
Request request = new Request(Uri.parse(url)); 
dm.enqueue(request); 

Intent i = new Intent(); 
i.setAction(DownloadManager.ACTION_VIEW_DOWNLOADS); 
startActivity(i); 

यह ठीक काम करता है, लेकिन मुझे एक HTML फ़ाइल डाउनलोड हो जाती है, जो कि मेरी स्कूल की वेबसाइट का लॉगिन पृष्ठ है। जाहिर है, मुझे किसी भी तरह उपयोगकर्ता की सत्र कुकीज़ जमा करने की आवश्यकता है, लेकिन मुझे दस्तावेज़ में ऐसा करने का कोई तरीका नहीं दिख रहा है।

उत्तर

18

कुकीज एक HTTP शीर्षलेख (नामित, उचित रूप से पर्याप्त, "कुकी") के माध्यम से भेजे जाते हैं, और सौभाग्य से, DownloadManager.Request has a method अपने स्वयं के शीर्षलेख जोड़ने के लिए।

तो आप क्या करना चाहते चाहते हैं क्या कुछ इस तरह है:

Request request = new Request(Uri.parse(url)); 
request.addRequestHeader("Cookie", "contents"); 
dm.enqueue(request); 

आप निश्चित रूप से, वास्तविक कुकी सामग्री के साथ "सामग्री" प्रतिस्थापित करना होगा। साइट के लिए वर्तमान कुकी प्राप्त करने के लिए CookieManager कक्षा उपयोगी होनी चाहिए, लेकिन यदि यह विफल हो जाता है, तो दूसरा विकल्प आपके एप्लिकेशन को लॉगिन अनुरोध करने और लौटाई गई कुकी को पकड़ना होगा।

+3

यह पूरी तरह से काम किया। मैं पहले से ही 'मानचित्र <स्ट्रिंग, स्ट्रिंग>' में कुकीज का प्रबंधन कर रहा था, इसलिए यह प्रारूपण के रूप में उतना ही आसान था जितना कि 'KEY1 = VALUE1; KEY2 = VALUE2;' और आपके द्वारा उल्लेखित फ़ंक्शन में पास कर रहा था। धन्यवाद! – Logiraptor

+0

यह बिल्कुल सही है - कुछ अन्य सड़कों पर नीचे गया लेकिन यह इसे दबा दिया! मुझे अपनी कुकीज़ को पेज पर प्राप्त किया गया है "कुकी मैनेजर.getInstance()। GetCookie (url);" और फिर परिणाम को कुकी मूल्यों के रूप में सीधे उपयोग कर सकते हैं! – slott