2014-11-21 58 views
3

當我使用代理客戶端發送請求時,如果得到某個響應,我希望能夠修改該請求,然後再次發送相同的請求所有請求。CXF客戶端代理如何處理客戶端內的某些響應代碼

通常我會做這樣的事情:

BookStore proxy = JAXRSClientFactory.create("http://books", BookStore.class); 
try 
{ 
    proxy.getBook("someId"); 
} 
catch(WebApplicationException ex) 
{ 
    Response r = ex.getResponse(); 
    if (r.getStatusCode() == 404) 
    { 
     proxy.getBook("anotherId"); 
    } 
} 

但在這種情況下,是我想對所有請求做一個平常的事:如果我得到一個特定的HTTP代碼,修改一些頭值,和然後再試一次(可能對重試次數有限制)。

我還沒有看到cxf代理客戶端明確支持這種方式,我該如何去實現它?

回答

1

您需要編寫一個攔截器爲每個請求執行此操作。 在這裏你可以找到示例代碼和文檔http://cxf.apache.org/docs/jax-rs-filters.html

+0

我知道CXF攔截器。這是專門用於CXF代理的,在客戶端而不是通常在其中實施攔截器的服務器端。 – 2015-07-17 09:27:43

+2

沒有人,攔截器也可以在客戶端執行。閱讀文檔並嘗試一些..http://cxf.apache.org/docs/jax-rs.html#JAX-RS-ClientAPI – 2015-07-17 09:43:15