作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 spring AsyncRestTemplate
帮助程序类开发一个异步 REST 客户端。
客户端需要在每个请求的头部发送一个token。
当使用 HttpAsyncClient
(属于 http://hc.apache.org/httpcomponents-asyncclient-4.0.x/index.html)作为其余模板的底层 http 客户端时,可以添加拦截器:
HttpRequestInterceptor interceptor = (request, context) -> request.addHeader("token", "value");
CloseableHttpAsyncClient client = HttpAsyncClients.custom()
.addInterceptorLast(interceptor)
.build();
HttpComponentsAsyncClientHttpRequestFactory factory = new HttpComponentsAsyncClientHttpRequestFactory(client);
AsyncRestTemplate template = new AsyncRestTemplate(factory);
但是,如果出于某种原因我需要更改底层客户端,则不能再使用此拦截器。
是否有任何其他方法可以使用与底层 http 客户端无关的拦截器来拦截 AsyncClientHttpRequest
?
最佳答案
不,不是通过 AsyncRestTemplate
也不是通过 HttpAsyncClient
。这些接口(interface)都没有提供用于添加 HttpRequestInterceptor
实例的修改器。
据我所知,只有它们的构建器是可变的。因此,即使您可以获得请求工厂或客户端,您仍然无法更改它们。
您必须拦截它们的实际创建,根据您的设置,这可能是不可能的。
关于java - 如何使用 AsyncRestTemplate 拦截 AsyncClientHttpRequest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26176685/
我正在使用 spring AsyncRestTemplate 帮助程序类开发一个异步 REST 客户端。 客户端需要在每个请求的头部发送一个token。 当使用 HttpAsyncClient(属于
我是一名优秀的程序员,十分优秀!