2013-08-30 58 views
1

我正在使用Jeresy Client Api與Rest服務進行通信。我想處理來自服務器的401響應。無論何時服務器給401 Jersey提供自己的驗證對話框,如瀏覽器的用戶名和密碼。Jersey客戶端基本身份驗證對話取消

client.addFilter(new com.sun.jersey.api.client.filter.HTTPBasicAuthFilter(username,password));

有沒有辦法隱藏或壓制這個Dialgue並呈現我的自定義Dialgue。

回答

0

我在開發使用Jersey Client API向RESTful Web服務發出HTTP請求的Eclipse插件之前就已經看到過這類問題。每當Web服務響應401 HTTP狀態代碼時,Eclipse都會自動顯示一個標準認證對話框,要求用戶輸入用戶名和密碼。

我可以通過刪除默認的Authenticator實例來抑制這個不需要的認證對話框。

Authenticator.setDefault(null);

如果你做到這一點,從您的應用程序的初始化階段,您可以使用Jersey客戶端API進行任何HTTP請求之前,應該防止默認的身份驗證對話框:您可以使用下面的代碼片段做到這一點在發生401 HTTP響應時顯示。

詳情請參閱Authenticator documentation

如果您想要顯示自己的自定義驗證對話框而不是默認對話框,則可以實現顯示所需對話框的Authenticator自定義子類。然後您可以在您的應用程序中使用Authenticator.setDefault(customAuthenticator);