DownloadManager с аутентификацией cookie

Я пытаюсь получить zip-файл с помощью DownloadManager, анализирующего файл cookie с JSESSIONID с моего сервера. Я получаю этот JSESSIONID, выполняя весь процесс входа в систему с помощью HTTPCLIENT lib и устанавливая переменную JSESSIONID для последующего использования в моем запросе DownloadManager.

Мой запрос на скачивание:

    DownloadManager.Request request = new DownloadManager.Request(Uri.parse(htmlUrlDownload));

    request.addRequestHeader("Cookie", "JSESSIONID=" + JSESSIONID);
    request.addRequestHeader(Constants.USER_AGENT, Constants.TARGET_REQUEST_HEADER);

    request.setDescription("Baixando " + metaDado.getType());
    request.setTitle("Download");
    request.allowScanningByMediaScanner();
    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);

    String nameFile = offlineUuid + ".zip";

    fileName = nameFile;

    filePath = Environment.getExternalStorageDirectory() + File.separator + Environment.DIRECTORY_DOWNLOADS
            + File.separator + fileName;

    request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, nameFile);

    final DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);

    final long downloadId = manager.enqueue(request);

Проблема в том, что загрузка никогда не начинается, а COLUMN_REASON возвращает код ERROR_UNHANDLED_HTTP_CODE.

Но если я попытаюсь загрузить тот же файл, используя ссылку Dropbox без аутентификации или с помощью httpclient, он отлично работает, что я делаю неправильно?

Как я могу получить лучшую ошибку msg?


person Victor Laerte    schedule 05.04.2013    source источник


Ответы (1)


В вашем коде нет ничего плохого, кажется, что ваш сервер отвечает кодом остановки перенаправления HTTP, что приводит к тому, что DownloadManager не может обработать загрузку.

Из Документов Android: –

публичный статический окончательный int ERROR_UNHANDLED_HTTP_CODE

Добавлено в уровень API 9. Значение COLUMN_REASON при получении HTTP-кода, который не может обработать диспетчер загрузки.

См. ниже фрагмент кода: -

Из исходного кода Android Framework DownloadManger.java

case Downloads.Impl.STATUS_UNHANDLED_HTTP_CODE:
                case Downloads.Impl.STATUS_UNHANDLED_REDIRECT:
                    return ERROR_UNHANDLED_HTTP_CODE;

Поэтому вам нужно проверить журналы вашего сервера на наличие этой проблемы или передать прямой URL-адрес файла диспетчеру загрузок, который не вызывает перенаправления.

Также обратите внимание, что вам нужны следующие два разрешения в вашем Androidmanifest.xml, чтобы загрузка работала должным образом.

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
person Akhil    schedule 15.04.2013
comment
У меня нет к нему доступа. Когда я сказал, что мой сервер, это был сервер, который я использовал, понял? :( - person Victor Laerte; 16.04.2013
comment
в любом случае перенаправления не поддерживаются в диспетчере загрузок, и из-за перенаправлений ваш запрос на загрузку не выполняется. Эта ссылка может быть вам полезна.. - person Akhil; 16.04.2013
comment
ты заработал бонус?? Вы правы, моя проблема как раз в перенаправлении. - person Victor Laerte; 23.04.2013
comment
нет .. у каждой награды есть ограничение по времени (вместе с льготным периодом), если вы не назначите ее кому-то, она будет потеряна навсегда. - person Akhil; 23.04.2013