Android DownloadManager и SSL (https)
О, отлично. Там всегда что-то еще, что некоторые... Grrr...
В любом случае, я работал дни и дни, пробираясь сквозь неопределенную, неполную и противоречивую информацию Picasa, чтобы мое приложение Android могло найти изображение Picasa и загрузить его с помощью диспетчера загрузки. Так что теперь я сделал последние штрихи и нажал кнопку "запустить". Все прошло нормально, пока DownloadManager не попытался загрузить файл:
java.lang.IllegalArgumentException: Can only download HTTP URIs: https://example.com/image.jpg
Скажи, что ты шутишь. Скажите, что они не создали менеджера загрузки, который не может обрабатывать SSL...
Еще лучше, расскажите, как включить SSL-доступ в диспетчере загрузки Android.
Ответы
Ответ 1
У меня была такая же проблема ранее. Да, я вижу, что поддержка HTTPS уже находится в ICS, но не в 2.3.7 и ниже, но мы можем извлечь исходный код для создания DownloadManager для поддержки этого.
На основе кода примера из
http://android-er.blogspot.com/2011/07/sample-code-using-androidappdownloadman.html
я сделал демо с извлеченным DownloadManager для поддержки HTTPS.
Здесь вы можете найти пример кода https://github.com/alvinsj/android-https-downloadmanager-demo, просто изменив URL-адрес на ваш https-адрес.
Ответ 2
Да, кажется, что DownloadManager
поддерживает только протокол HTTP
: http://www.google.com/codesearch#cZwlSNS7aEw/frameworks/base/core/java/android/app/DownloadManager.java&exact_package=android&q=Can%20only%20download%20HTTP%20URIs&type=cs&l=343
Я тоже разочарован, так как просто хотел использовать его на сайте HTTPS.
Ответ 3
Я нашел очень легкое решение для этого:
request = new DownloadManager.Request(sourceUrl.replace("https://", "http://"))
Удивительно работала для всех URL-адресов https, которые я пробовал. Я не уверен в безопасности https, но нет исключения, и файл загружается правильно.