问题描述
请帮助使用 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);
});
解决方法
显然你只是在创建命令对象,而不是执行和检索结果。
试试这个:
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。