在调用Axis2的wsdl2java生成服务存根时,如果远程服务需要Ntlm认证的话,就会发生如下错误:
org.apache.axis2.AxisFault: Transport error: 401 Error: Unauthorized
在生成stub文件中找到_serviceClient代码:
_serviceClient = new org.apache.axis2.client.ServiceClient( configurationContext, _service);
在后边加上如下代码:
HttpTransportProperties.Authenticator basicauth = new HttpTransportProperties.Authenticator();
basicauth.setUsername("xxxx");
basicauth.setPassword("xxx");
使用外网的话,还需要加上主机和域名:
basicauth.setHost("xx.xx.x.xx");
basicauth.setDomain("xx.xx.xx.xx");
_serviceClient.getOptions().setProperty(org.apache.axis2.transport.http.HTTPConstants.AUTHENTICATE,basicauth);