Джерси: Распечатать актуальный запрос - PullRequest
83 голосов
/ 28 июля 2011

Как посмотреть фактический запрос, который Джерси генерирует и отправляет на сервер? У меня возникли проблемы с конкретным запросом, и сотрудник, работающий с веб-сервером, попросил просмотреть полный запрос (с заголовками и тому подобным).

Ответы [ 3 ]

98 голосов
/ 29 июля 2011

Если вы просто используете клиентский 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 (фильтр контейнера).

48 голосов
/ 08 января 2015

@ivan.cikic ответ для Джерси 1.x. Вот как вы делаете это в Джерси 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. Было бы лучше, если бы это дало мне контроль над регистратором. Похоже, шаг назад в дизайне.

47 голосов
/ 04 июня 2016

Поскольку Джерси 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();

JavaDoc из LoggingFeature говорит, что запрос "и /или "ответ записывается лол.На моей машине оба зарегистрированы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...