[英]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.