2013-04-05 3 views
4

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

Мой загрузить запрос:

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

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

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

ответ

4

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

Из Android Docs: -

общественности статической окончательный ИНТ 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"/> 
+0

сделал у проверил логи сервера? – Akhil

+0

У меня нет доступа к нему. Когда я сказал свой сервер, был сервер, который я использовал, понял? :( –

+0

так или иначе перенаправления не поддерживаются в менеджере загрузки, и из-за перенаправления ваш запрос на загрузку не работает. ** [Эта ссылка может быть полезна для вас] (http://stackoverflow.com/a/13212978/1677824) ** .. – Akhil

Смежные вопросы