记录JSON @ Jersey Rest WS的请求主体

时间:2016-10-02 18:40:23

标签: java eclipse jersey

如何从以下代码打印/记录JSON的请求主体@ Rest WS with Jersey in Java。我可以记录响应。我正在努力记录/打印确切的请求正文。

提前致谢。

WebTarget target = client.target(url);

    //authentication strings
    String authString = "username:password";
    byte[] authEncBytes = Base64.encodeBase64(authString.getBytes());
    String authStringEnc = new String(authEncBytes);

    Response res = target.request(MediaType.APPLICATION_JSON)   
            .header("content-type", "application/json")
            .header("Authorization", "Basic " + authStringEnc)
            .header("accept", "application/json,text/plain")    
            .header("X-senderTimestamp", new Timestamp(System.currentTimeMillis()))
            .header("X-appCode", "IVR")
            .header("X-sessionId", XsessionId)
            .post(Entity.entity(getAccountInfoInputBean, MediaType.APPLICATION_JSON));

2 个答案:

答案 0 :(得分:2)

泽西岛2.23及以后

在Jersey 2.23及更高版本中,LoggingFeature将为您提供帮助。必须注册如下:

ClientConfig clientConfig = new ClientConfig();
clientConfig.property(LoggingFeature.LOGGING_FEATURE_VERBOSITY_CLIENT, 
                      LoggingFeature.Verbosity.PAYLOAD_ANY);
Client client = ClientBuilder.newBuilder(clientConfig);

使用默认详细程度设置(LoggingFeature.Verbosity.PAYLOAD_TEXT),将记录请求和响应标头,以及实体(如果认为是可读文本)。如果媒体类型为text/*或是以下之一,则该实体被视为可读文本:

  • application/atom+xml
  • application/json
  • application/svg+xml
  • application/x-www-form-urlencoded
  • application/xhtml+xml
  • application/xml

请注意,实体已记录到指定的最大字节数(请参阅LoggingFeature.LOGGING_FEATURE_MAX_ENTITY_SIZE)。

有关详细信息,请查看Jersey documentation about logging

旧版本

在旧版本中,请使用LoggingFilter。根据文档,从Jersey 2.23及更高版本开始,此过滤器已被弃用,将很快删除。

答案 1 :(得分:0)

您可以使用LoggingFilter登录System.out。

client.addFilter(new LoggingFilter(System.out));
WebTarget target = client.target(url);