5

如何通过基本的 http 身份验证访问 Web 服务?我正在使用内置于 web 服务客户端功能的 netbeans。但是当我尝试访问 web 服务时,我收到一个异常,并显示 401 auth failed 错误消息。

如何传递正确的用户名和密码?

谢谢!

4

2 回答 2

4

您可以使用 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");
于 2010-01-20T21:05:01.377 回答
3

您还可以提供自己的身份验证器。这样,即使 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());

}
于 2011-04-19T10:48:30.323 回答