如何通过基本的http身份验证访问webservice?我正在使用netbeans内置的webservice客户端功能。但是当我尝试访问webservice时,会出现一个带有401身份验证失败错误消息的异常。
我该如何传递正确的用户名和密码?
谢谢!
如何通过基本的http身份验证访问webservice?我正在使用netbeans内置的webservice客户端功能。但是当我尝试访问webservice时,会出现一个带有401身份验证失败错误消息的异常。
我该如何传递正确的用户名和密码?
谢谢!
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());
}
reqContext.put(BindingProvider.USERNAME_PROPERTY, "username");
方法不行,这与我的Java版本有关吗? - Jaime Hablutzel
prov.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "fred"); prov.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "fred"); String b = aImplPort.b(); System.out.println(b);`但它没有发送预期的授权HTTP头。
- Jaime Hablutzel