Получать ответы сценариев связи в HtmlUnit - PullRequest
0 голосов
/ 20 ноября 2018

Я хочу получить актуализацию данных в динамической сети.Наблюдая за Chrome Dev Tool, я вижу, что веб-адрес непрерывно направляет URL-запросы на получение данных json или получает их с помощью веб-сокетов.

Я пытался получить все ответы, полученные в Интернете, для актуализации своих данных илисообщения, полученные с помощью WebSockets, но с помощью моего кода я мог только получить ответ на URL-запрос в Интернете.

Можно сделать то, что мне нужно, с помощью HtmlUnit?

      /* turn off annoying htmlunit warnings */
        java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(java.util.logging.Level.OFF);



        WebClient client = new WebClient(BrowserVersion.CHROME);  
        client.getOptions().setCssEnabled(false);  
        client.getOptions().setJavaScriptEnabled(true);
        client.getOptions().setThrowExceptionOnScriptError(false);

        HtmlPage page = client.getPage("https://mobile.bet365.com/Default.aspx?lng=3");
        client.waitForBackgroundJavaScript(10000);

        List<NameValuePair> response =page.getWebResponse().getResponseHeaders();
        for (NameValuePair header : response) {
             System.out.println(header.getName() + " = " + header.getValue());
         }
        System.out.println(page.asText());

        client.close();
  }

1 Ответ

0 голосов
/ 23 ноября 2018

Я нашел решение для получения ответов Html в документации HtmlUnit.Я оставляю здесь код, то же самое можно сделать с запросами:

new WebConnectionWrapper(webClient) {

        public WebResponse getResponse(WebRequest request) throws IOException {
            WebResponse response = super.getResponse(request);
            if (request.getUrl().toExternalForm().contains("my_url")) {
                String content = response.getContentAsString();

                //change content

                WebResponseData data = new WebResponseData(content.getBytes(),
                        response.getStatusCode(), response.getStatusMessage(), response.getResponseHeaders());
                response = new WebResponse(data, request, response.getLoadTime());
            }
            return response;
        }
    };
...