如何通过基本的 http 身份验证访问 Web 服务?我正在使用内置于 web 服务客户端功能的 netbeans。但是当我尝试访问 web 服务时,我收到一个异常,并显示 401 auth failed 错误消息。
如何传递正确的用户名和密码?
谢谢!
如何通过基本的 http 身份验证访问 Web 服务?我正在使用内置于 web 服务客户端功能的 netbeans。但是当我尝试访问 web 服务时,我收到一个异常,并显示 401 auth failed 错误消息。
如何传递正确的用户名和密码?
谢谢!
您可以使用 BindingProvider 或 WSBindingProvider 类通过基本的 http 身份验证访问 Web 服务。代码如下。
XxxService service = new XxxService();
Xxx port = service.getXxxPort();
Map<String, Object> reqContext = ((BindingProvider)port).getRequestContext();
reqContext.put(BindingProvider.USERNAME_PROPERTY, "username");
reqContext.put(BindingProvider.PASSWORD_PROPERTY, "password");
您还可以提供自己的身份验证器。这样,即使 WDSL 本身受到基本 HTTP 身份验证的保护,它也可以工作。
@WebServiceRef(wsdlLocation = "https://laka/sito?wsdl")
static XxxService service;
public static void main(String[] args) {
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("user", "password".toCharArray());
}
});
service = new XxxService();
Xxx port = service.getXxxPort();
// invoke webservice and print response
XxxResponse resp = port.foo();
System.out.println(resp.toString());
}