在 Java 中的 DevTools 中获取网络请求的响应正文数据

时间:2021-02-05 09:37:23

标签: java google-chrome-devtools chrome-devtools-protocol selenium4

请帮助使用 Devtools Network 获取拦截请求的响应正文(作为 json)。下面是我可以尝试的代码。谢谢!

devTools.addListener(Network.requestWillBeSent(),
                entry -> {
                    Request req;
                    RequestId rid=entry.getRequestId();
                    if (entry.getRequest().getUrl().contains("tender")) {
                        req=entry.getRequest();
                    }
                    try {
                        br.write("Request URI : " + entry.getRequest().getUrl()+"\n With method : "+entry.getRequest().getMethod() + "\n");
                    } catch (IOException e) {e.printStackTrace();}

                    Command <ResponseBody> resBody=Network.getResponseBody(rid);

                });

1 个答案:

答案 0 :(得分:0)

显然你只是在创建命令对象,而不是执行和检索结果。

试试这个:

Command<GetResponseBodyResponse> getBody = Network.getResponseBody(responseReceived.getRequestId());
GetResponseBodyResponse response = driver.getDevTools().send(getBody);
ObjectMapper objectMapper = new ObjectMapper();
try {
    JsonNode n = objectMapper.readValue(response.getBody(), JsonNode.class);
    debug("Response from Command: " + n.toPrettyString());
} catch (JsonMappingException e) {
        e.printStackTrace();
} catch (JsonProcessingException e) {
        e.printStackTrace();
}

为了获得此响应数据,我使用 ResponseReceived 和您的 DevTools-Instance 注册了 Network.responseReceived()-Event。