在 HtmlUnit 中获取脚本通信响应
Get scripts communications responses in HtmlUnit
我想在动态网络中实现数据。
查看 Chrome 开发工具,我发现网络不断发出 URL 获取请求以获取 json 数据,或者使用 websockets 获取它们。
我试图获取 Web 获得的所有响应以实现其数据或 WebSocket 收到的消息,但使用我的代码我只能获得 Web 的 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();
}
我在 Html 单元文档中找到了获得 Html 响应的解决方案。我把代码留在这里,可以对请求进行相同的操作:
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;
}
};
我想在动态网络中实现数据。 查看 Chrome 开发工具,我发现网络不断发出 URL 获取请求以获取 json 数据,或者使用 websockets 获取它们。
我试图获取 Web 获得的所有响应以实现其数据或 WebSocket 收到的消息,但使用我的代码我只能获得 Web 的 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();
}
我在 Html 单元文档中找到了获得 Html 响应的解决方案。我把代码留在这里,可以对请求进行相同的操作:
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;
}
};