3
我想为web服务上的每个请求使用两个拦截器。一个用于传出通信,另一个用于响应。是否可以代理一个输入的请求?
我正在使用ClientHttpRequestInterceptor
这是工作的传出。我设置它如下:
//Rest template
RestTemplate tpl = api.getRestTemplate();
List<ClientHttpRequestInterceptor> interceptors = new ArrayList<ClientHttpRequestInterceptor>();
interceptors.add(new OutgoingRequestInterceptor());
tpl.setInterceptors(interceptors);
但是,我想这样的拦截器为传入(响应)。我检查了Spring框架源代码,我找不到任何东西。
任何提示?
编辑:
也许我很困惑或在我脑子里有什么错。我今天有点不舒服。
我已经在我的拦截器类下面的代码:
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] bytes, ClientHttpRequestExecution requestExecution) throws IOException
{
SLog.d("intercepted!!"+request.getURI()+". Bytes: "+bytes);
try
{
Thread.sleep(5000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
ClientHttpResponse response = requestExecution.execute(request, bytes);
SLog.d("Response Headers: " + response.getHeaders());
return response;
}
问题:正在为传出,传入,或两者的代码? 因为日志:request.getUri()
正在返回目标网址。
然后,在Response
对象上,我得到由WebService发送的标头。
所以我确信,响应实际上是服务器的响应。但是...怎么样?它在实际发送请求之前触发吗?