Web services Netbeans基本Http验证Jax WS

Web services Netbeans基本Http验证Jax WS,web-services,netbeans,jax-ws,webservice-client,http-authentication,Web Services,Netbeans,Jax Ws,Webservice Client,Http Authentication,如何通过基本http身份验证访问Web服务?我正在使用netbeans内置的webservice客户端功能。但是当我尝试访问Web服务时,我得到了一条401 auth failed错误消息的异常 如何传递正确的用户名和密码 谢谢大家! 您可以使用BindingProvider或WSBindingProvider类通过基本http身份验证来访问Web服务。 代码如下 XxxService service = new XxxService(); Xxx port = service.getXxxPo

如何通过基本http身份验证访问Web服务?我正在使用netbeans内置的webservice客户端功能。但是当我尝试访问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");
XxxService service=newxxxservice();
Xxx端口=service.getXxxPort();
Map reqContext=((BindingProvider)端口).getRequestContext();
reqContext.put(BindingProvider.USERNAME_属性,“USERNAME”);
reqContext.put(BindingProvider.PASSWORD_属性,“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());

}

如果WSDL本身没有受到基本Http身份验证的保护,那么这将起作用。为什么它对我不起作用?我正好有
AImpl aimplpport=new AImplService().getaimplpport();BindingProvider prov=(BindingProvider)aImplPort;prov.getRequestContext().put(BindingProvider.USERNAME_属性,“fred”);prov.getRequestContext().put(BindingProvider.PASSWORD_属性,“fred”);字符串b=aImplPort.b();系统输出打印ln(b)它没有发送预期的授权http headerDidn不知道java包含此功能。非常有用。谢谢为什么它适用于我和
reqContext.put(BindingProvider.USERNAME_属性,“USERNAME”)方法与我的java版本无关吗?