2015-03-11 6 views
1

Я хочу, чтобы загрузить источник веб-страницы в файл (* .htm) (т.е. весь контент со всеми HTML наценки на все) из этого URL:JAVA: как загрузить веб-страницу динамически созданный сервлета

http://isap.sejm.gov.pl/DetailsServlet?id=WDU20061831353

который отлично работает с методом FileUtils.copyURLtoFile.

Однако указанный URL имеет также некоторые ссылки, например, тот, который я очень заинтересован в:

http://isap.sejm.gov.pl/RelatedServlet?id=WDU20061831353&type=9&isNew=true

Эта ссылка отлично работает Если открыть его с помощью обычного браузера, но когда я попробуйте загрузить его на Java с помощью FileUtils - у меня есть только страница без содержания с единственным сообщением «trwa ladowanie danych» (что означает: «загрузка данных ...»), но затем ничего не происходит, целевая страница не является загружен.

Может ли кто-нибудь помочь мне с этим? Из URL-адреса я вижу, что страница использует Servlets - есть ли особый способ загрузки страниц, созданных с помощью сервлета?

С уважением -

ответ

0

Это не проблема сервлета - это просто происходит быть технологиями, используемые для реализации сервера, но, как правило клиентам не нужно заботиться о том, что. Я сильно подозреваю, что сервер отвечает разными данными в зависимости от заголовков запросов (например, User-Agent). Я вижу совсем другой ответ, когда получаю его с curl по сравнению с тем, когда я загружаю его в Chrome, например.

Я предлагаю вам поэкспериментировать с curl, сделав запрос, который будет как можно ближе к запросу из браузера, а затем возится, пока вы не узнаете, какие именно заголовки задействованы. Вы можете использовать Wireshark или Fiddler, чтобы упростить просмотр точных запросов/ответов.

Конечно, даже если вы можете правильно исправить исходный HTML-код, все еще есть все Javascript - было бы вполне возможно, чтобы HTML не содержал ни одного из данных, но для него включал Javascript, который делает фактическую выборку данных , Я не верю, что это так для этой конкретной страницы, но вы также можете найти это происходит из-за

+0

Благодарим вас за быстрый ответ. Будут копать в завитки :) – plktrautman

0

попытки использования селена WebDriver на главную страницу

HtmlUnitDriver driver = new HtmlUnitDriver(true); 
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
driver.get(baseUrl); 

и затем перейдите по ссылке

driver.findElement(By.name("name of link")).click(); 
+0

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

0

UPDATE: Я проверил следующее: если отключить куки в Firefox, а затем попытаться загрузить мою страницу:

http://isap.sejm.gov.pl/RelatedServlet?id=WDU20061831353&type=9&isNew=true

тогда я даю неверный результат, как в моем приложении java (т. страницы с сообщением «загрузка данных» вместо правильного содержимого).

Теперь, как я могу управлять куки-файлами в java, чтобы правильно загрузить эту страницу?