我正試圖讓自主尋途在Jersey客戶端2.0中工作。這裏是我的代碼:JAXRS 2.0客戶端:FOLLOW_REDIRECTS屬性不起作用
ClientConfig cc = new ClientConfig().property(ClientProperties.FOLLOW_REDIRECTS, true);
Client c = ClientBuilder.newClient(cc);
WebTarget wt = c.target("some_path");
SystemInfo info = wt.request(MediaType.APPLICATION_XML_TYPE).get(SystemInfo.class);
服務器按照預期發送HTTP 302與位置標題中的另一個URL。我假設根據Jersey JAXRS Client API客戶端將自動重定向到新的指定的URL,但我得到一個RedirectionException而不是。
這是合適的行爲嗎?如何讓客戶端重定向工作而無需在try-catch-block中手動執行重定向?
在此先感謝!
更新:
我已經找到了問題點的奇怪行爲。如果以服務器編程方式在服務器上進行類似的重定向:
return Response.seeOther(another_uri).build();
一切都很好。但在我的情況下,重定向在部署描述符由於作出security-constraint元素:
<security-constraint>
...
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
因此,客戶端從http:// localhost:8080/some_path
由servlet容器自動重定向到https:// localhost:8181/another_path
。 在瀏覽器中它工作正常,但Jersey客戶端似乎忽略FOLLOW_REDIRECTS屬性,而是拋出一個RedirectionException。
在這種情況下是否有機會重定向正常工作?謝謝!
你用FOLLOW_REDIRECTS嘗試了嗎? –
是的,你應該有:ClientConfig cc = new ClientConfig()。property(ClientProperties.FOLLOW_REDIRECTS,true); – jeorfevre
謝謝,糾正!我玩過所有可能的配置變體,並且「錯誤」值被錯誤地複製粘貼。實際上,將FOLLOW_REDIRECTS屬性設置爲值「true」沒有任何區別。 – olexd