Jersey: Drucken Sie die eigentliche Anfrage

Wie kann ich die tatsächliche Anfrage anzeigen, die Jersey generiert und an den Server sendet? Ich habe Probleme mit einer bestimmten Anfrage und der Kollege, der den Webserver betreibt, bat darum, die vollständige Anfrage zu sehen (mit Kopfzeilen und dergleichen).

Wenn Sie nur die Jersey Client API verwenden, sollte LoggingFilter (Client-Filter) Ihnen helfen:

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); 

Andernfalls können Sie die Anforderung und die Antwort auf dem Server erneut mit einem anderen Protokollierungsfilter (Containerfilter) protokollieren .

@ ivan.cikic’s Antwort ist für Jersey 1.x. Hier ist, wie Sie es in Jersey 2.x tun:

 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()); 

Das ist irrelevant, aber ich muss mich nur beschweren: Der neue LoggingFilter ist wirklich nervig, weil man LoggingFilter ist, Java Util Logging zu benutzen. Es wäre besser, wenn es mir Kontrolle über den Logger geben würde. Scheint wie ein Rückschritt im Design.

Seit Jersey 2.23 gibt es eine LoggingFeature Sie verwenden können. Im Folgenden finden Sie ein etwas vereinfachtes Beispiel. Beachten Sie, dass Sie die function auch auf WebTarget registrieren können.

 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 von LoggingFeature sagt, dass die Anfrage “und / oder” die Antwort lol protokolliert wird. Auf meinem Rechner sind beide geloggt.