2013-07-29 6 views
6

मैं फ़ाइल होस्ट से वेबव्यू का उपयोग कर फ़ाइल डाउनलोड करने की कोशिश कर रहा हूं (जैसे zippyshare.com)। समस्या यह है कि, मैं ब्राउज़र खोलने के इरादे का उपयोग नहीं कर सकता, या इसे डाउनलोड मैनेजर के माध्यम से फिर से चला सकता हूं, क्योंकि यह सत्र/कुकी आधारित है, और उन तरीकों को लॉन्च करने से ज़िप फ़ाइल को मूल HTML फ़ाइल में री-डाउनलैड में रीडायरेक्ट किया जाता है।वेबव्यू का उपयोग कर सत्र/कुकी आधारित फ़ाइल डाउनलोड करने के लिए मैं एंड्रॉइड का उपयोग कैसे कर सकता हूं?

मैं कोशिश की है:

Uri source = Uri.parse(url); 
DownloadManager.Request request = new DownloadManager.Request(source); 

String cookie = CookieManager.getInstance().getCookie(url); 
request.addRequestHeader("Set-Cookie", cookie); 
request.addRequestHeader("User-Agent", view.getSettings().getUserAgentString()); 
request.addRequestHeader("Accept", "text/html, application/xhtml+xml, *" + "/" + "*"); 
request.addRequestHeader("Accept-Language", "en-US,en;q=0.7,he;q=0.3"); 
request.addRequestHeader("Referer", url); 

// Use the same file name for the destination 
final File destinationDir = new File (Environment.getExternalStorageDirectory(), cordova.getActivity().getPackageName()); 

if (!destinationDir.exists()) { 
    destinationDir.mkdir(); // Don't forget to make the directory if it's not there 
} 

File destinationFile = new File (destinationDir, source.getLastPathSegment()); 
Log.e("FILEPOSITION", Uri.fromFile(destinationFile).toString()); 
request.setDestinationUri(Uri.fromFile(destinationFile)); 
// Add it to the manager 
manager.enqueue(request); 

और:

Bundle bundle = new Bundle(); 

String cookie = CookieManager.getInstance().getCookie(url); 
bundle.putString("cookie", cookie); 
bundle.putString("User-Agent", view.getSettings().getUserAgentString()); 

Intent intent = new Intent(Intent.ACTION_VIEW ,Uri.parse(url)); 
intent.putExtra(Browser.EXTRA_HEADERS, bundle); 
cordova.getActivity().startActivity(intent); 

कुकी सहेजने के लिए प्रयास करने के, और जब मैं देख रहा हूँ हेडर ठीक भेजा जाता है, यह अभी भी एचटीएमएल लिंक पर रीडायरेक्ट , जो मुझे विश्वास करता है कि यह सत्र आधारित है।

क्या इस तरह से फ़ाइल डाउनलोड करने का कोई तरीका है?

उत्तर

6

मैं एक ही समस्या से निपट रहा था और मैं अपना पहला समाधान काम करने में कामयाब रहा, केवल थोड़ी सी बदलाव के साथ।

request.addRequestHeader("Cookie", cookie); 

Btw: बस Set-Cookie चौड़ाई Cookie बदलें। सत्र आधारित का अर्थ है कि ऑथ डेटा कुकीज़ में संग्रहीत नहीं किया जाता है, लेकिन सर्वर की तरफ, एक कुंजी द्वारा पहचाना जाता है, जो कुकीज़ में संग्रहीत होता है। तो यह वास्तव में कोई फर्क नहीं पड़ता कि यह सत्र आधारित है या नहीं, दोनों मामलों में कुकीज़ का उपयोग किया जाता है।

मैंने दूसरे समाधान की कोशिश की है (यह आसान है) लेकिन मैंने जो पढ़ा है उससे यह लगता है कि Browser.EXTRA_HEADERS केवल डिफ़ॉल्ट एंड्रॉइड ब्राउज़र द्वारा समर्थित है। तो यदि उपयोगकर्ता के डिवाइस में एक अलग ब्राउज़र है तो यह काम नहीं करेगा।

यह एक पुराना सवाल है, लेकिन मुझे आशा है कि इससे किसी की मदद मिलेगी।

+0

धन्यवाद tobik, मैं शाम को एक नज़र रखूंगा, उम्मीद है कि यह काम करता है :) – trueicecold

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

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