2013-08-30 73 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);