我正在编写针对web服务的集成测试,这些web服务使用JAX-RS注释进行注释并使用Spring Security进行保护。我使用Resteasy客户端代理框架来生成代理,从中我可以调用方法来测试web服务。例如,新客户端= ResteasyClient ResteasyClientBuilder().connectionPoolSize(10).connectionTTL(10,TimeUnit.SECONDS).build();
ResteasyWebTarget target = client.target(properties.getRestWebBaseUrl());
ProxyBuilder<UserClient> builder = target.proxyBuilder(UserClient.class);
UserClient userClient = builder
.defaultConsumes(MediaType.APPLICATION_JSON).build();如何将cookie添加到Resteasy构造的请求中?我已尝试注册ClientRequestFilter,但它不起作用。
谢谢,
发布于 2014-08-21 17:09:41
注册ClientRequestFilter确实有效,如下所示:
ResteasyWebTarget target = client.target(properties.getRestWebBaseUrl());
Cookie cookie = new Cookie("foo", "bar");
client.register(new CookieClientRequestFilter(cookie));
ProxyBuilder<UserClient> builder = target.proxyBuilder(UserClient.class);
UserClient userClient = builder
.defaultConsumes(MediaType.APPLICATION_JSON).build();通过以下方式:
import javax.ws.rs.client.ClientRequestContext;
import javax.ws.rs.client.ClientRequestFilter;
import javax.ws.rs.core.Cookie;
import javax.ws.rs.ext.Provider;
import java.io.IOException;
@Provider
public class CookieClientRequestFilter implements ClientRequestFilter {
private Cookie cookie;
public CookieClientRequestFilter(Cookie cookie) {
super();
this.cookie = cookie;
}
@Override
public void filter(ClientRequestContext clientRequestContext) throws IOException {
List<Object> cookies = new ArrayList<>();
cookies.add(this.cookie);
clientRequestContext.getHeaders().put("Cookie", cookies);
}
}https://stackoverflow.com/questions/23358105
复制相似问题