java - Jersey 客户端基本身份验证对话抑制

标签 java http http-authentication jersey-client

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

client.addFilter(new com.sun.jersey.api.client.filter.HTTPBasicAuthFilter(用户名,密码));

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

最佳答案

我之前在开发使用 Jersey Client API 向 RESTful Web 服务发出 HTTP 请求的 Eclipse 插件时就遇到过此类问题。每次 Web 服务响应 401 HTTP 状态代码时,Eclipse 都会自动显示一个标准身份验证对话框,要求用户输入用户名和密码。

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

Authenticator.setDefault(null);

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

请引用Authenticator documentation了解更多详情。

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

在应用程序中注册它

关于java - Jersey 客户端基本身份验证对话抑制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18525010/

相关文章:

java - PreparedStatement批处理执行只执行最后一个批处理

java - 为什么我的带图像的 jbutton 不显示图形 java

Node.js:给定 URL 数组,确定哪些是有效的

angularjs 基本身份验证 header

java - CXF RESTful Client - 如何在没有 Spring 的情况下进行基本的 http 身份验证?

java - List 方法返回集合

java - 关于基类和派生类的实现问题

android - Android WebView 是否需要打开外部 URL 的权限?

javascript - 尝试通过 node.js http 发布到 "read ECONNRESET"时出现 'graph.facebook.com' 错误

swift 3 - WKWebView 中的 http 身份验证