2016-06-21 27 views
2

我只需將查詢參數附加到傳出請求上。 (Java EE 7.0,JAX-RS 2.0)在ClientRequestFilter中附加查詢參數

具體而言,我目前使用RESTeasy客戶端版本3.0.14,因此我使用花哨的接口代理系統進行通話。我正在試圖製造這樣的事情:

myapplication/api/path?timestamp=000

有:

@Provider 
public class MyRequestFilter implements ClientRequestFilter { 

    @Context 
    private HttpServletRequest servletRequest; 

    public void filter(ClientRequestContext requestContext) throws IOException { 

     servletRequest.getParameterMap().put("timestamp", new String[]{ 
       String.valueOf(new Date().getTime()) 
     }); 

    } 
} 

我確信我是用client.register(MyRequestFilter.class)註冊它。隨意問的問題。謝謝!

+0

我將它標記爲重複的原因是因爲您使用了錯誤的過濾器。與查詢參數或標題無關。你正在使用服務器過濾器,當你應該使用客戶端過濾器(如在重複的帖子中解釋) –

+0

如果你不知道如何使用正確的過濾器,請更新您的文章,嘗試做與客戶端過濾器,我很樂意重新打開這個問題。 –

+0

OHH小俯視,lemme做一些測試超快。謝謝,我有點鹹鹹XD我的壞。 –

回答

3

感謝@peeskillet -

requestContext這樣重建URI:

requestContext.setUri(UriBuilder.fromUri(requestContext.getUri()).queryParam("key", value).build()); 

現在你可以看到

requestContext.getUri().toString(); 

同樣,新的查詢參數,驗證您在製作REST客戶端時註冊它

client.register(MyRequestFilter.class); 
+0

Perfecto設置請求URI –