J'ai besoin de voir mon corps de requête avec une requête client JAX-RS afin de vérifier que la sérialisation fonctionne correctement et de réutiliser la requête pour des clients de test comme Postman .
Je sais qu'il est possible d'activer la journalisation avec Jersey en utilisant par exemple resource.addFilter(new com.Sun.jersey.api.client.filter.LoggingFilter());
. Cependant, je n'utilise pas directement l'implémentation de Jersey ou RESTEasy, mais abstraite via l'API JAX-RS:
final WebTarget target =
ClientBuilder.newBuilder().build().target("http://localhost:8080");
Comment puis-je activer la journalisation ici?
La réponse de @peeskillet + cet extrait .
Cependant, la méthode close()
de l'extrait n'est parfois pas invoquée par l'implémentation JAX-RS (org.jboss.resteasy:resteasy-client-3.0.11.FINAL
Dans ce cas).
JAX-RS 2.0 (qui ressemble à ce que vous utilisez), a le ClientRequestFilter
. Vous pouvez l'enregistrer avec le Client
ou même le WebTarget
. À partir de la méthode filter
, vous pouvez obtenir l'entité et faire votre journalisation
public class LoggingFilter implements ClientRequestFilter {
private static final Logger LOG = Logger.getLogger(LoggingFilter.class.getName());
@Override
public void filter(ClientRequestContext requestContext) throws IOException {
LOG.log(Level.INFO, requestContext.getEntity().toString());
}
}
[...]
Client client = ClientBuilder.newClient();
client.register(new LoggingFilter());
Aussi l'API ClientRequestContext
pour d'autres goodies que vous pourriez trouver intéressants.
Voir aussi: