我正在使用Jeresy Client Api與Rest服務進行通信。我想處理來自服務器的401響應。無論何時服務器給401 Jersey提供自己的驗證對話框,如瀏覽器的用戶名和密碼。Jersey客戶端基本身份驗證對話取消
client.addFilter(new com.sun.jersey.api.client.filter.HTTPBasicAuthFilter(username,password));
有沒有辦法隱藏或壓制這個Dialgue並呈現我的自定義Dialgue。
我正在使用Jeresy Client Api與Rest服務進行通信。我想處理來自服務器的401響應。無論何時服務器給401 Jersey提供自己的驗證對話框,如瀏覽器的用戶名和密碼。Jersey客戶端基本身份驗證對話取消
client.addFilter(new com.sun.jersey.api.client.filter.HTTPBasicAuthFilter(username,password));
有沒有辦法隱藏或壓制這個Dialgue並呈現我的自定義Dialgue。
我在開發使用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);