Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Загрузка pdf файла через http запрос c авторизацией на java

java
http
Теги: #<Tag:0x00007f7b6194cb70> #<Tag:0x00007f7b6194ca30>

(Aliaksandr) #1

Всем привет, требуется скачать pdf файл, который динамически генерируетcя aspx скриптом. Вебдрайвер код фрейма с pdf не видит. Не понимаю как и чем лучше сформировать запрос для загрузки с авторизацией на java.


(Roy Obenon) #2

Взять обёртку над rest, выполнить запрос с авторизацией и скачать, в чём проблема не пойму?


(Andrey Forostovsky) #3

Если известен адрес pdf и поддерживается авторизация через RFC 1728, т.е. user:password@host:port/url-path тогда передаём логин-пароль с урлой в драйвер и качаем.

Если авторизация через куку и опять таки есть ссылка на файл, тогда надо взять куки у драйвера, пройти по нем итератором и выдрать нужную, а после этого подсунуть её классу, который умеет открывать соединение с кукой, например вот мой костыль:

Set cookies = driver.manage().getCookies();
Iterator itr = cookies.iterator();
//get proper cookie
Cookie cookie = itr.next();
loginToken = cookie.getValue();

//open connection
HttpURLConnection con = (HttpURLConnection) new URL(“URL_TO_PDF”).openConnection();
con.setRequestMethod(“GET”);
//pass cookie to http client
con.addRequestProperty(“Cookie”, “login-token=”+loginToken);
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));

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