【问题标题】:How to get websocket in webclient of gargoylesoftware如何在 gargoylesoftware 的 webclient 中获取 websocket
【发布时间】:2015-10-03 14:09:42
【问题描述】:

gargoyle 软件库是否支持 Websocket?我想在 webclient 中获取 websocket 对象。

【问题讨论】:

    标签: java htmlunit web-client


    【解决方案1】:

    是的,WebSocket 从 2.11 版开始受支持。但是,始终建议使用最新版本。

    请确保您在最近的浏览器中使用BrowserVersion,例如CHROMEFIREFOX_38INTERNET_EXPLORER_11

    例如:

    try (final WebClient webClient = new WebClient(BrowserVersion.CHROME)) {
    

    HtmlUnit 将自动处理带有 WebSocket 的 JavaScript。

    更新:

    要拦截请求和响应,您可以使用:

        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("UTF-8");
    
                    //change content
    
                    WebResponseData data = new WebResponseData(content.getBytes("UTF-8"),
                            response.getStatusCode(), response.getStatusMessage(), response.getResponseHeaders());
                    response = new WebResponse(data, request, response.getLoadTime());
                }
                return response;
            }
        };
    

    【讨论】:

    • 那我怎样才能在java中获取websocket对象呢?我想从java中的websocket获得所有响应。能?或者如何拦截http的所有请求和响应?
    • 我没有触发该请求。它在 html 页面的 javascript 中自动执行。那么如何拦截所有请求呢?
    • 请你测试一下好吗?这段代码不会触发任何东西,它仍然会拦截所有请求,无论是用户生成的还是 JavaScript 生成的
    • 它只是打印一些请求,然后程序结束。实际上它是 gwt 应用程序。它将在后台流式传输数据。如何让javascript继续在那里运行?
    • 我现在可以捕获 ajax 响应了。但 websocket 仍然无法正常工作:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 2019-11-28
    • 1970-01-01
    • 2013-08-08
    • 2019-12-18
    • 2020-10-30
    • 2015-09-05
    相关资源
    最近更新 更多