में कुकीज को कैसे बनाए रखें, हमारे पास एक .net फॉर्म एथ सक्षम साइट है जो उपयोगकर्ता हमारे एंड्रॉइड ऐप में वेबव्यू क्लाइंट के माध्यम से विज़िट करता है। साइट की विशेषताओं में से एक है कुछ पीडीएफ फाइलों को लॉगिन और डाउनलोड करने की क्षमता, हालांकि आपको पीडीएफ डाउनलोड करने के लिए लॉग इन करने की आवश्यकता है।वेबव्यू क्लाइंट से URL को कनेक्शन, ब्राउज़र, या अन्य फ़ाइल डाउनलोड तकनीक में एंड्रॉइड
हम वर्तमान में shouldOverrideUrlLoading
लागू कर रहे हैं और सही स्थिति को पूरा करते समय निम्न कोड के माध्यम से पीडीएफ डाउनलोड कर रहे हैं।
URL u = new URL(url);
URLConnection conn = u.openConnection();
int contentLength = conn.getContentLength();
DataInputStream stream = new DataInputStream(u.openStream());
byte[] buffer = new byte[contentLength];
stream.readFully(buffer);
stream.close();
DataOutputStream fos = new DataOutputStream(new FileOutputStream("/sdcard/download/file.pdf"));
fos.write(buffer);
fos.flush();
fos.close();
आईआईएस लॉग से, यह स्पष्ट है कि आईआईएस इस अनुरोध को लॉग इन करने और इसे लॉगिन पृष्ठ पर रीडायरेक्ट करने पर विचार नहीं करता है।
हमें फ़ाइल डाउनलोड अनुरोध में जारी ऑथ कुकी के साथ फ़ाइल डाउनलोड करने का एक तरीका है, लेकिन कुकी पर बने रहने के तरीके के रूप में हमें नुकसान हुआ है।
हमारे लिए एक और व्यवहार्य समाधान WebViewClient और एंड्रॉइड ब्राउज़र के बीच ऑथ कुकी को जारी रखना है। अगर हम ऐसा कर सकते हैं, तो हम ब्राउज़र में डिफ़ॉल्ट कार्रवाई के माध्यम से पीडीएफ फ़ाइल खोलेंगे।
संपादित करें: ऐसा लगता है कि मैं के माध्यम से
conn.setRequestProperty("Cookie", "");
अब मैं सिर्फ यह पता लगाने कैसे WebViewClient से बाहर प्रमाणन कुकी पढ़ने के लिए
बहुत उपयोगी कोड, लेकिन यह कोड कुकीज़ को कहां सेट कर रहा है? URLConnect का उपयोग कर urls पर ब्राउज़ करते समय कुकीज़ सेट करना संभव है? – NoBugs
इस लाइन पर कुकी को इसकी सेटिंग 'कॉन।setRequestProperty ("कुकी", auth); ', मैं स्पष्ट रूप से स्पष्ट करने के लिए पोस्ट संपादित करूंगा। कुकी स्ट्रिंग पर आपके पास 100% नियंत्रण है, दोनों इसे 'वेब व्यू' से प्राप्त कर रहे हैं और इसे 'URLConnection' में सेट कर रहे हैं, ताकि आप जो भी वैल्यू चाहते हैं उसे जारी रख सकें। मैं 'वेबव्यू' द्वारा भेजे गए कुकी स्ट्रिंग का निरीक्षण करने के लिए फिडलर या कुछ का उपयोग करके पुनः प्राप्त करता हूं, इस तरह आप जानते हैं कि 'URLConnection' में क्या रहना है। उपर्युक्त मामले में, मैंने बस सभी कुकीज़ को जारी रखा। मैं चुनिंदा कुछ दूसरों को नहीं चुन सकता था, लेकिन मैंने आसान विकल्प चुना। –