如何在RestEasy客户端中获取响应头?

b

我正在使用Jax-RS 2.0(Resteasy 3.0.7.Final实现Restful服务,并共享客户端和服务之间的接口。

返回值是空的,因为自RestEasy在3+版本开始引入JAX-RS 2.0以来,不赞成使用ClientResponse。

要返回新创建的对象的位置,我使用@Context注释注入响应,并添加Content-Location标头。

例如:

共享接口:

   @Path("/")
   @Consumes("application/xml")
   @Produces("application/xml")
   interface Resource {

        @Path("createSomething")
        void createSomething(AnyObject object);

        ...
   }

实现类(服务):

    class ResourceImpl {

         ...
         @Context org.jboss.resteasy.spi.HttpResponse response;
         ...

         @Override
         void createSomething(AnyObject object) throws AnyException {

             String id = service.create(object);

             response.getOutputHeaders().putSingle("Content-Location",
                  "/createSomething/" + id);

             response.setStatus(Response.Status.CREATED.getStatusCode());
         }

    }

客户端(使用Resteasy代理框架构建):

     ...
     ResteasyClient client = new ResteasyClientBuilder().build();
     ResteasyWebTarget target = client.target(baseUrl);

     Resource resource = (Resource) target.proxy(Resource.class);   

     resource.createSomething(anyObject);
     ...

如何获取服务已插入的标头信息(以及其他信息,例如Atom链接)?

使用客户端过滤器和拦截器是否合理?

谢谢你

b

我发现最好的解决方案是使用筛选器来处理传入的响应标头。

public class HeaderFilter implements ClientResponseFilter {


  private Map<String, String> headers = new HashMap<>();

  private List<String> headerFilter = new ArrayList<>();


  public final void addHeaderFilter(final String header) {

      headerFilter.add(header);
  }

  public final void removeHeaderFilter(final String header) {

      headerFilter.remove(header);
  }

  public final String getHeader(final String header) {

      return headers.get(header);
  }

  @Override
  public final void filter(final ClientRequestContext requestContext,
          final ClientResponseContext responseContext) 
                                      throws IOException {

      headers = new HashMap<>();

      for (String headerToLookFor : headerFilter) {

          String header = responseContext.getHeaderString(headerToLookFor);

          if (header != null) {

              headers.put(headerToLookFor, header);
          } else {

              ...
          }
      }
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在soap客户端中获取Http响应代码?

来自分类Dev

如何在客户端使用 jaxws 访问 websevice 响应头?

来自分类Dev

如何在Roda中获取客户端的IP地址?

来自分类Dev

如何在ssh会话中获取客户端ip?

来自分类Dev

如何在JAX-WS客户端中设置SOAP标头

来自分类Dev

在 HTTP/2 中,标头如何在客户端和服务器端保持同步?

来自分类Dev

在客户端获取csv响应

来自分类Dev

RESTEasy客户端+ NoSuchMethodError

来自分类Dev

使用Java Rest客户端获取zip文件(restEasy)

来自分类Dev

如何在客户端获取会话ID?(WebSocket)

来自分类Dev

如何在客户端获取 JSON 对象

来自分类Dev

如何在客户端从mongodb获取数据?

来自分类Dev

如何在Android中通过客户端获取订阅的到期日期?

来自分类Dev

如何在Netty Framework中获取客户端的本地IP?

来自分类Dev

OpenStack:如何在python API中获取客户端的IP

来自分类Dev

如何在MVC 4控制器中获取客户端IP地址?

来自分类Dev

Elasticsearch重点:如何在Java客户端中获取字段的整个文本

来自分类Dev

如何在HttpHandler(Julia语言)中获取客户端IP地址?

来自分类Dev

我如何在django中获取客户端计算机的mac地址

来自分类Dev

如何在ODBC本机客户端中获取SQL Server DateTime字段

来自分类Dev

如何在Java Servlet中获取客户端MAC地址?

来自分类Dev

如何在单向ASMX Web服务中获取客户端IP地址

来自分类Dev

如何在Java HttpServletRequest中获取客户端IP地址

来自分类Dev

如何在ASP.NET MVC中获取客户端IP地址?

来自分类Dev

如何在Orbeon Forms的客户端JavaScript中获取元素ID?

来自分类Dev

如何在Azure Functions C#中获取客户端IP地址?

来自分类Dev

如何在Aerospike Node.js客户端中获取主键

来自分类Dev

如何在Next.js中执行客户端数据获取

来自分类Dev

如何在Aqueduct Dart服务器中获取客户端请求的IP地址

Related 相关文章

  1. 1

    如何在soap客户端中获取Http响应代码?

  2. 2

    如何在客户端使用 jaxws 访问 websevice 响应头?

  3. 3

    如何在Roda中获取客户端的IP地址?

  4. 4

    如何在ssh会话中获取客户端ip?

  5. 5

    如何在JAX-WS客户端中设置SOAP标头

  6. 6

    在 HTTP/2 中,标头如何在客户端和服务器端保持同步?

  7. 7

    在客户端获取csv响应

  8. 8

    RESTEasy客户端+ NoSuchMethodError

  9. 9

    使用Java Rest客户端获取zip文件(restEasy)

  10. 10

    如何在客户端获取会话ID?(WebSocket)

  11. 11

    如何在客户端获取 JSON 对象

  12. 12

    如何在客户端从mongodb获取数据?

  13. 13

    如何在Android中通过客户端获取订阅的到期日期?

  14. 14

    如何在Netty Framework中获取客户端的本地IP?

  15. 15

    OpenStack:如何在python API中获取客户端的IP

  16. 16

    如何在MVC 4控制器中获取客户端IP地址?

  17. 17

    Elasticsearch重点:如何在Java客户端中获取字段的整个文本

  18. 18

    如何在HttpHandler(Julia语言)中获取客户端IP地址?

  19. 19

    我如何在django中获取客户端计算机的mac地址

  20. 20

    如何在ODBC本机客户端中获取SQL Server DateTime字段

  21. 21

    如何在Java Servlet中获取客户端MAC地址?

  22. 22

    如何在单向ASMX Web服务中获取客户端IP地址

  23. 23

    如何在Java HttpServletRequest中获取客户端IP地址

  24. 24

    如何在ASP.NET MVC中获取客户端IP地址?

  25. 25

    如何在Orbeon Forms的客户端JavaScript中获取元素ID?

  26. 26

    如何在Azure Functions C#中获取客户端IP地址?

  27. 27

    如何在Aerospike Node.js客户端中获取主键

  28. 28

    如何在Next.js中执行客户端数据获取

  29. 29

    如何在Aqueduct Dart服务器中获取客户端请求的IP地址

热门标签

归档