我正在使用Jeresy Client Api与Rest服务进行通信。我想处理来自服务器的401响应。每当服务器给401 Jersey提供自己的身份验证对话框,如浏览器的用户名和密码。
client.addFilter(new com.sun.jersey.api.client.filter.HTTPBasicAuthFilter(username,password));
有没有办法隐藏或抑制此刻度并显示我的自定义刻度。
答案 0 :(得分:0)
在我开发使用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);