当前位置: 首页 > 知识库问答 >
问题:

有没有办法从泽西的javax.ws.rs.客户端获取请求信息?

韩佐
2023-03-14

我正在尝试为在jersey上构建的项目制定日志记录标准,我想提供一种简单的方法来记录请求信息和响应,以防出现异常。以下代码说明了我的想法:

    Client client = null;
    Response response = null;
    try {
        client = ClientBuilder.newClient();
        response = client.target("<URL>")
                .request(MediaType.APPLICATION_JSON)
                .post(entity);
    } catch( Exception ex) {
        //Send information for exception mapping to a JSON log
        throw new ServiceException( client,response );
    }

问题是如何在我的ServiceException类中获得以下内容:

    String url = client.getUri().toString(); //only one I could get using WebTarget
    MultivaluedMap<String, String> headers = client.getHeaders();
    String body = client.getEntity();
    MultivaluedMap<String, String> queryParams = client.getQueryParams();    
    String method = client.getMethod();

我试图访问WebTarget,但运气不佳。

提前感谢!

共有1个答案

宋运锋
2023-03-14

泽西对客户端和服务器端都有日志记录支持。留档显示了如何向Client注册它。它也可以向WebtTarget注册。

如果你对结果不满意,并且你想实现你自己的,我会像泽西一样实现它:用一个WriterInterceptor的组合来记录请求实体流1和一个客户端(请求|响应)过滤器2来获取请求和响应的其他部分(如标头和请求行)。

您可以查看ClientLoggingFilterLoggingInterceptor的源代码,以获得一些实现的想法。

它需要使用拦截器,而不是只对所有内容使用过滤器,因为过滤器只会给你预序列化的对象,可以是任何难以记录的对象。使用输入流进行通用日志记录更容易。

2-请参阅过滤器和拦截器

 类似资料:
  • 我想执行我们的服务器支持的 PATCH 请求,以便使用 Jersey 客户端进行测试。我的代码如下,有人可以让我知道下面的代码有什么问题吗? 这是完全的例外,

  • 当我尝试access/oauth/token时,我得到了错误: O.S.S.O.Provider.Endpoint.TokenEndpoint:处理错误:NoSuchClientException,没有请求ID:username的客户端 null

  • 问题内容: 我正在尝试编写一个使用Jersey客户端API访问RESTful Web服务的库。该服务需要设置cookie的登录请求,然后后续请求必须将该cookie设置为成功。登录请求按预期方式工作,我能够从登录响应中检索cookie,但似乎无法在后续请求中重新添加cookie。谁能说出我可能做错了什么。这是发出请求的代码: 当请求没有失败时,服务将以应用程序错误“ No Session”进行响应

  • 我正在编写一个rest客户机,它使用服务器的POST restful sevice。现在服务需要2个参数作为'form-data'中请求的一部分。 如果您有跨邮递员rest客户机,我们有一个选项来设置表单数据,并给出键值对参数。 现在,如何发送两个参数,即“文件名”,“文件版本”和它们的值作为表单数据的一部分?

  • 我使用客户机对一个API进行REST调用,该API返回mulipart中的一个Json和一个PDF文件作为响应的第一和第二部分。 使用上面的客户端解析这个多部分响应的正确方法是什么?

  • 我有一个网站,我只是想写一个脚本,发送字符串到一个文本输入在页面(唯一的一个)和点击提交。我构建了一个selenium系统,但被告知这是矫枉过正的,访问页面上的endpoint并以这种方式发送文本要“容易”得多。 线程“main”java.lang.IllegalStateException中出现异常:未找到InjectionManagerFactory。在org.glassfish.jersey