相关疑难解决方法(0)

如何在 RESTEasy 3.0 客户端框架(使用 ResteasyClientBuilder 和 ResteasyWebTarget)中设置 HTTP 标头?

我试图弄清楚如何设置类似于此处解释的 HTTP 标头:

但是,我想使用 RESTeasy 3.0 功能(ResteasyClientBuilder 和 ResteasyWebtarget)而不是已弃用的 ProxyFactory,如下所述:

只是为了澄清,我也不想在每个请求上设置标头/不想将它们传递给客户端,如果可能的话,我希望将它们设置在 ResteasyClientBuilder/ResteasyWebtarget 级别。

java jax-rs resteasy

5
推荐指数
1
解决办法
7940
查看次数

如何使用JAX-RS中的过滤器向HTTP请求添加标头?

我正在通过添加单个标头来修改HttpRequestWebFilterrequest使用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.

我怎么解决这个问题?

jax-rs java-ee

4
推荐指数
1
解决办法
7884
查看次数

标签 统计

jax-rs ×2

java ×1

java-ee ×1

resteasy ×1