簡體   English   中英

如何在RESTEasy 3.0客戶端框架中設置HTTP標頭(使用ResteasyClientBuilder和ResteasyWebTarget)?

[英]How to set HTTP header in RESTEasy 3.0 client framework (with ResteasyClientBuilder and ResteasyWebTarget)?

我正在試圖找出如何設置類似於此處解釋的HTTP標頭:

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

而且為了澄清,我也不想在每個請求上設置標頭/不希望它們被傳遞給客戶端,我希望它們可以設置在ResteasyClientBuilder / ResteasyWebtarget級別上。

找到了解決方案。

訣竅是使用ResteasyClient注冊ClientRequestFilter(下面方法的第2行):

public Resource getResource(Credentials credentials) {
    ResteasyClient client = new ResteasyClientBuilder().build();
    client.register(new AuthHeadersRequestFilter(credentials));
    return client.target(restServiceRoot).proxy(Resource.class);
}

然后讓您的請求過濾器執行以下操作:

public class AuthHeadersRequestFilter implements ClientRequestFilter {

    private final String authToken;

    public AuthHeadersRequestFilter(Credentials credentials) {
        authToken = credentials.getAuthorizationHeader();
    }

    @Override
    public void filter(ClientRequestContext requestContext) throws IOException {
        requestContext.getHeaders().add("Authorization", authToken);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM