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發送的標頭。
所以我確信,響應實際上是服務器的響應。但是...怎麼樣?它在實際發送請求之前觸發嗎?