Предполагается работа на windows хосте, на него и нужно скриптом загрузить файл для дальнейшей обработки. Реализация предполагается на джаве с использыванием внешних библиотек. Сайт htpps, имеет базовую аутентификацию.
Спасибо)
Ну, если используется протокол https, то без разницы на чём он работает. А что значит загрузить файл? HTTP post? или в какой-то каталог положить?
В каталог. Чтобы понимать откуда его брать для установки.
ну при инициализации например ФФ профайла, вы можете указать, дефолт фолдер всех скачек и указать, что бы небыло окна подтвержения закачки.
А можно ближе к реализации, а то слишком абстрактно как-то)) допустим авторизацию и отключить можно, но остается вопрос закрузки в нужное место.
Огромное спасибо, остался теперь вопрос, как средствами джава и вебдрайвера пройти базовую аутентификацию пользователя.
Указать логин и пароль в адресе.
https://user:password@example.com/
Уточнил, авторизация проходит через POST, к сожалению через урл не пройдет.
в теории:
средставами java сделать POST (http://www.mkyong.com/java/how-to-send-http-request-getpost-in-java/)
в ответ получить куки
куки скормить вебдрайверу
Не совсем понял ваш workflow. Вы спрашиваете, как скачать файл средствами драйвера… Но как это связано с POST аутентификацией? Скачка файла требует авторизации пользователя, но вы хотите закачать ее в обход UI?
Или задача вообще не связана с драйвером, и вам лишь нужно дернуть соответствующий сервис средствами Java, а затем прочитать байт стрим и записать в файл на диске?
Или вы хотите совместить проход по UI до места закачки (генерация файла на сервере), а затем скачать его средствами Java?
К слову, какая там у вас религия на стороне сервисов - soap или rest? Также следует понимать, нет ли там дополнительного handshake запроса перед непосредственной авторизацией. Вообще говоря, все эти моменты можно уточнить у ваших девелоперов. Наверняка у них уже есть тесты, покрывающие работу с файловым сервисом. Там же и сможете подсмотреть, как реализована аутентификация.
Вопрос решил. Все оказалось достаточно просто, много пробелов в знаниях просто, прилагаю шаблон решения:
public void downloadClientToURL() {
try {
URL url = new URL("https://......");
String loginAndPassword = "login" + ":" + "password";
String encoding = Base64.getEncoder().encodeToString(
loginAndPassword.getBytes());
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection.setRequestMethod("GET");
connection.setDoOutput(true);
connection.setRequestProperty("Authorization", "Basic " + encoding);
InputStream content = (InputStream) connection.getInputStream();
File file = new File("d:" + File.separator + "filename.exe");
OutputStream out = new FileOutputStream(file);
IOUtils.copy(content, out);
content.close();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Благодарю за подсказки)