У нас есть сайт с поддержкой авторизации форм .net, который пользователь посещает через WebViewClient в нашем приложении для Android. Одной из особенностей сайта является возможность входа и загрузки некоторых файлов PDF, однако для загрузки файлов PDF необходимо войти в систему.
В настоящее время мы внедряем shouldOverrideUrlLoading
и загружаем pdf через следующий код, когда выполняется правильное условие.
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();
Из журналов IIS очевидно, что IIS не считает этот запрос входящим в систему и перенаправляет его на страницу входа.
Нам нужен способ загрузки файла с сохраненным файлом cookie аутентификации в запросе на загрузку файла, но мы не знаем, как сохранить файл cookie.
Другим жизнеспособным решением для нас является сохранение cookie-файла авторизации между WebViewClient и браузером Android. Если бы мы могли это сделать, мы бы просто открыли файл PDF с помощью действия по умолчанию в браузере.
Редактировать: Похоже, я могу вручную установить файл cookie с помощью
conn.setRequestProperty("Cookie", "");
Теперь мне просто нужно выяснить, как считывать файл cookie аутентификации из WebViewClient