我试图弄清楚如何设置类似于此处解释的 HTTP 标头:
但是,我想使用 RESTeasy 3.0 功能(ResteasyClientBuilder 和 ResteasyWebtarget)而不是已弃用的 ProxyFactory,如下所述:
只是为了澄清,我也不想在每个请求上设置标头/不想将它们传递给客户端,如果可能的话,我希望将它们设置在 ResteasyClientBuilder/ResteasyWebtarget 级别。
我正在通过添加单个标头来修改HttpRequest我WebFilter的request使用HttpServletRequestWrapper实现类:
HeaderMapRequestWrapper requestWrapper = new HeaderMapRequestWrapper(request);
requestWrapper.addHeader(OAuth.OAUTH_ACCESS_TOKEN, accessTokenWord);
chain.doFilter(requestWrapper, response);
Run Code Online (Sandbox Code Playgroud)
后doFilter(requestWrapper, response)进行,JAX-RS导致请求到它的资源,其具有@RequestScoped字段:
@Inject
protected HttpServletRequest request;
Run Code Online (Sandbox Code Playgroud)
但是,它不包含任何预期的标头:
@PostConstruct
protected void initialize_resources() throws IllegalStateException {
this.currentUser = null;
String accessToken = this.request.getHeader(OAuth.OAUTH_ACCESS_TOKEN);
AccessToken accessToken = this.memcachedResources.getMemcachedAccessTokenRepository()
.get(accessToken);
if (accessToken != null && StringUtils.isNotEmpty(accessToken.getUser_id())) {
this.currentUser = this.em.find(User.class, accessToken.getUser_id());
this.currentClient = accessToken.getClientId();
}
}
Run Code Online (Sandbox Code Playgroud)
所以,this.request.getHeader(OAuth.OAUTH_ACCESS_TOKEN)是的null.
我怎么解决这个问题?