这可能有点晚了,但是对于遇到相同问题的人来说,这可能会有所帮助。如果您真的想使用 Axis 1.x 身份验证,请在您的客户端类上完成,如下所示:
MyLocator bindingService = new MyLocator();
bindingService .setPortEndPointAddress(myEndpoint);
MyPort port= bindingService.getMyPort();
((Stub)port)._setProperty(Stub.USERNAME_PROPERTY, myUsername);
((Stub)port)._setProperty(Stub.PASSWORD_PROPERTY, mPassword);
//Perform your query here
我个人会使用 JAX-WS。使用 wsimport 生成存根(SOAPUI 有一个很好的插件来简化它)。对于 JAX-WS 客户端上的身份验证,最简单的方法是将 wsdl 保存在本地并将其作为 jar 的一部分导出,然后将其加载到客户端中。这首先消除了访问 wsdl 所需的 HTTP 授权需求。
URL myWsdlUrl = getClass().getClassLoader().getResource("wsdl/myWsdlFile.wsdl");
MyService service = new MyService(myWsdlUrl , new QName("uri", "localpart"));
myPort port= service .getPort();
BindingProvider bp= ((BindingProvider)vPort);
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, myEndPoint);
bp.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, myUsername);
bp.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, myPassword);
//Perform query here