1

我正在使用 Jeresy Client Api 与 Rest 服务进行通信。我想处理来自服务器的 401 响应。每当服务器为 401 Jersey 提供自己的身份验证对话框时,例如浏览器的用户名和密码。

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

有没有办法隐藏或抑制此对话并显示我的自定义对话。

4

1 回答 1

0

在我开发一个使用 Jersey 客户端 API 向 RESTful Web 服务发出 HTTP 请求的 Eclipse 插件之前,我已经看到过这种问题。每次 Web 服务以 401 HTTP 状态码响应时,Eclipse 都会自动显示一个标准的身份验证对话框,要求用户输入他们的用户名和密码。

我能够通过删除默认Authenticator实例来抑制这个不需要的身份验证对话框。您可以使用以下代码片段执行此操作:

Authenticator.setDefault(null);

如果您从应用程序的初始化阶段执行此操作,则在使用 Jersey 客户端 API 发出任何 HTTP 请求之前,如果发生 401 HTTP 响应,它应该防止显示默认身份验证对话框。

请参阅Authenticator文档以获取更多详细信息。

如果您想显示您自己的自定义身份验证对话框而不是默认对话框,您可以实现Authenticator显示所需对话框的自定义子类。然后,您可以使用在您的应用程序中注册它Authenticator.setDefault(customAuthenticator);

于 2013-12-05T18:38:12.040 回答