1

我的 RESTEasy 服务确实有一个使用 cookie 参数的方法:

public interface SimpleService
{
  public String test(@CookieParam("param") String param);
}

现在我正在尝试将我的 SimpleService 与 RESTEasy 客户端框架一起使用,它是我的 Servlet 中的代理工厂。但是,如何正确“转发”cookie 参数?现在,我需要手动遍历请求的 cookie 数组,并手动将 cookie 的值提供给 test(..) 函数调用。阅读http://docs.jboss.org/resteasy/docs/2.3.0.GA/userguide/html/RESTEasy_Client_Framework.html上的 RESTEasy 客户端框架文档:

@CookieParam 与其服务器端对应的镜像工作相反,并创建一个 cookie 标头以发送到服务器。如果您分配自己的 javax.ws.rs.core.Cookie 对象并将其作为参数传递给客户端代理方法,则不需要使用 @CookieParam。客户端框架了解您正在将 cookie 传递给服务器,因此不需要额外的元数据。

所以我很好奇这对我的案子意味着什么?如何在我的 servlet 中正确使用 RESTEasy 客户端框架和 cookie 参数?

谢谢!

4

1 回答 1

1

自从您问以来已经有一段时间了,您现在可能已经解决了这个问题,但这里有一些东西供将来参考:

如果您希望使用客户端框架访问从服务器发送的 cookie,我认为您会遇到遍历标头的问题(ClientResponse就像您今天所做的那样?)。

但是,如果您想了解其@CookieParam工作原理,使用您当前的界面制作客户端,它会是这样的:

SimpleService service = ProxyFactory.create(SimpleService.class, "the://url:to/your/service");
service.test("this text becomes a cookie called 'param' in the request");

该 cookie 将作为字符串输入参数提供给服务器端实现。

@Get
@Path("/test")
public String test(@CookieParam("param") cookie) {
    log(cookie); // would print: this text becomes a cookie called 'param' in the request
    return "seems legit";
}

希望这对您、未来的读者或两者都有帮助!

于 2012-12-03T17:28:36.780 回答