2016-01-12 3 views
0

Я пытаюсь загрузить содержимое веб-страницы с помощью этого кода, но он не совпадает с Firefox.Java - Загрузить https страницу

URL url = new URL("https://jumpseller.cl/support/webpayplus/"); 
InputStream is = url.openStream(); 
Files.copy(is, Paths.get("/tmp/asdfasdf"), StandardCopyOption.REPLACE_EXISTING); 

Когда я проверяю /tmp/asdfasdf это не исходный HTML-код страницы, а просто байт (без текста). Но все же, в Firefox я вижу веб-страницу и ее исходный код

Как я могу получить реальную веб-страницу?

+0

Я работаю в Jumpseller.cl. Не стесняйтесь пишите нам, и мы можем предоставить вам полный контент файла (учитывая, что вы предоставите нам достаточный кредит). – tiagomatos

ответ

0

Вам необходимо изучить заголовки ответов. Страница сжимается. Заголовок Content-Encoding имеет значение gzip.

Попробуйте это:

URL url = new URL("https://jumpseller.cl/support/webpayplus/"); 
URLConnection conn = url.openConnection(); 
InputStream is = conn.getInputStream(); 

if ("gzip".equals(conn.getContentEncoding())) { 
    is = new GZIPInputStream(is); 
} 

Files.copy(is, Paths.get("/tmp/asdfasdf"), StandardCopyOption.REPLACE_EXISTING); 
0

Используйте HtmlUnit библиотеку и этот код:

try(final WebClient webClient = new WebClient(BrowserVersion.CHROME)) { 
     java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF); 
     webClient.setAjaxController(new NicelyResynchronizingAjaxController()); 
     webClient.getOptions().setThrowExceptionOnScriptError(false); 
     webClient.getOptions().setUseInsecureSSL(true); 
     webClient.waitForBackgroundJavaScript(5 * 1000);   
     HtmlPage page = webClient.getPage("https://jumpseller.cl/support/webpayplus/"); 
     String stringToSave = page.asXml(); // It's a string with full HTML-code, if need you can save it to file. 
     webClient.close(); 
    } 
Смежные вопросы