泽西岛:打印实际请求

2022-08-31 10:50:01

如何查看泽西岛生成并发送到服务器的实际请求?我在特定请求时遇到问题,运行Web服务器的家伙要求查看完整的请求(带有标头等)。


答案 1

如果您只使用泽西客户端 API,则 LoggingFilter(客户端筛选器)应该可以帮助您:

Client client = Client.create();
client.addFilter(new LoggingFilter(System.out));
WebResource webResource = client.resource("http://localhost:9998/");
ClientResponse response = webResource.accept(MediaType.APPLICATION_JSON)
                                         .get(ClientResponse.class);

否则,您可以使用其他日志记录筛选器(容器筛选器)再次在服务器上记录请求和响应。


答案 2

泽西岛2.23开始,您可以使用一个LogingFeature。下面是一个简化的示例,请注意,您也可以在 WebTarget 上注册该功能。

Logger logger = Logger.getLogger(getClass().getName());

Feature feature = new LoggingFeature(logger, Level.INFO, null, null);

Client client = ClientBuilder.newBuilder()
        .register(feature)
        .build();

Response response = client.target("https://www.google.com")
        .queryParam("q", "Hello, World!")
        .request().get();

JavaDoc 表示请求“和/或”响应被记录为 lol。在我的计算机上,两者都被记录。LoggingFeature


推荐