如何查看Jersey生成并发送到服务器的实际请求?我遇到了特定请求的问题,并且运行Web服务器的人员要求查看完整请求(带有 Headers 等) .
如果您只是使用Jersey Client 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);
否则,您可以使用其他LoggingFilter(容器过滤器)再次在服务器上记录请求和响应 .
@ ivan.cikic的答案是 Jersey 1.x.以下是你在Jersey 2.x中的表现:
import org.glassfish.jersey.client.ClientConfig; import org.glassfish.jersey.filter.LoggingFilter; import org.json.JSONException; import org.json.JSONObject; import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.Entity; import javax.ws.rs.client.WebTarget; import javax.ws.rs.core.Form; import javax.ws.rs.core.MediaType; ... ClientConfig config = new ClientConfig(); Client client = ClientBuilder.newClient(config); client.register(new LoggingFilter());
这是无关紧要的,但我只是抱怨:新的 LoggingFilter 真的很烦人,因为它迫使你使用Java Util Logging . 如果它让我控制 Logger 会更好 . 似乎在设计上倒退了一步 .
LoggingFilter
自 Jersey 2.23 以来,你可以使用LoggingFeature . 以下是一个简单的示例,请注意您也可以在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();
LoggingFeature 的JavaDoc表示请求"and/or"响应被记录lol . 在我的机器上,两者都被记录下来 .
LoggingFeature
3 回答
如果您只是使用Jersey Client API,LoggingFilter(客户端过滤器)应该可以帮助您:
否则,您可以使用其他LoggingFilter(容器过滤器)再次在服务器上记录请求和响应 .
@ ivan.cikic的答案是 Jersey 1.x.以下是你在Jersey 2.x中的表现:
这是无关紧要的,但我只是抱怨:新的
LoggingFilter
真的很烦人,因为它迫使你使用Java Util Logging . 如果它让我控制 Logger 会更好 . 似乎在设计上倒退了一步 .自 Jersey 2.23 以来,你可以使用LoggingFeature . 以下是一个简单的示例,请注意您也可以在WebTarget上注册该功能 .
LoggingFeature
的JavaDoc表示请求"and/or"响应被记录lol . 在我的机器上,两者都被记录下来 .