2015-08-11 3 views
-1

Итак, я пробовал это уже пару дней, и у меня действительно не осталось времени, так как проект должен состояться завтра. Мне было интересно, может ли кто-нибудь помочь мне в этом. Я пытаюсь загрузить PDF-файл по этой ссылке, которая является ссылкой на веб-страницу содержимого PDF. Я попытался использовать Jsoup, но Jsoup не поддерживает веб-страницы, когда они написаны в формате PDF. Это код, который я пытался использовать:Загрузка файла PDF с защищенной веб-страницы

System.out.println("opening connection"); 
    URL url = new URL("https://www.capitaliq.com/CIQDotNet/Filings/DocumentRedirector.axd?versionId=1257051021&type=pdf&forcedownload=false"); 
    InputStream in = url.openStream(); 
    FileOutputStream fos = new FileOutputStream("/Users/HIDDEN/Desktop/fullreport.pdf"); 

    System.out.println("reading file..."); 
    int length = -1; 
    byte[] buffer = new byte[1024];// buffer for portion of data from 
    // connection 
    while ((length = in.read(buffer)) > -1) { 
     fos.write(buffer, 0, length); 
    } 
    fos.close(); 
    in.close(); 
    System.out.println("file was downloaded"); 

Проблема с этим кодом является то, что он автоматически переадресует вас на страницу входа в систему, в которой вы должны ввести имя пользователя и пароль. Поэтому мне нужно найти способ войти в мою учетную запись и подключиться к странице без использования Jsoup (как уже упоминалось ранее, это невозможно прочитать в формате PDF). Если кто-то может изменить этот код, чтобы я мог войти в систему, а затем загрузить pdf, просмотрев html этой страницы входа и отредактировав код. Я был бы бесконечно благодарен. Спасибо!

+2

мы здесь не делать строчить код для вас. Короче говоря, вы должны копировать все, что происходит в браузере. если это логин на основе формы, вам необходимо реплицировать эту форму представления, захватить любые соответствующие файлы cookie/auth и использовать те, которые содержатся в запросе, для захвата pdf. –

+0

Я знаю это. Мой вопрос заключается в том, как нужно делать это без Jaunt или Jsoup ... – Serpemes

+0

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

ответ

0

HtmlUnit - это то, что я использую для таких вещей, особенно если скорость не является критичной.

Вот случайный иш кусок псевдо кода из другого одного из моих ответов:

WebClient wc = new WebClient(BrowserVersion.CHROME); 

HtmlPage p = wc.getPage(url) 

((HtmlTextInput) p.getElementById(userNameId)).setText(userName); 
((HtmlTextInput) p.getElementById(passId)).setText(pass); 

p = ((HtmlElement) p.getElementById(submitBtnId)).click(); 

// Just as an example for something I've had to do, I use 
// UnexpectedPage when the "content-type" is "application/zip" 
UnexpectedPage up = ((HtmlElement) p.getElementById(downloadBtn)).click(); 

InputStream in = up.getInputStream(); 

... 

Использование another library для чтения PDF

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