请帮助:我正在尝试从 SOAPUI 调用 WebService,我注意到该服务需要我通过请求参数提供的用户名和密码。我注意到原始 XML 包含添加到 SOAPHeader 的用户/密码片段。片段如下:
<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><wsse:UsernameToken wsu:Id="UsernameToken-3" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><wsse:Username>testuser</wsse:Username><wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">testpassword&</wsse:Password><wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">RYadQak91mr7dB+5hyt8yw==</wsse:Nonce><wsu:Created>2011-10-24T20:13:43.039Z</wsu:Created></wsse:UsernameToken>
</wsse:Security>
现在,我想通过添加用户/密码详细信息来实现相同的目标,如下面的代码:代码片段是:
org.tempuri.myService.MyServiceStub stub = new org.tempuri.myService.MyServiceStub();
ServiceClient sc = stub._getServiceClient();
HttpTransportProperties.Authenticator auth = new HttpTransportProperties.Authenticator();
auth.setUsername("testuser");
auth.setPassword("password$");
sc.getOptions().setProperty(org.apache.axis2.transport.http.HTTPConstants.AUTHENTICATE,auth);
org.tempuri.myService.MyServiceDocument myService4 = (org.tempuri.myService.MyServiceDocument)getTestObject(org.tempuri.myService.MyServiceDocument.class);
MyService lval = MyService4.addNewMyService();
MyServiceParameters lvParams = lval.addNewParameters();
lvParams.setA("24");
lvParams.setB("10");
lval.setParameters(lvParams);
myService4.setMyService(lval);
但是我得到以下轴故障异常,需要帮助解决我对上述代码所做的错误。轴故障异常详细信息:
org.apache.axis2.AxisFault: Exception occurred while executing service 'MyService'.
at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:531)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:375)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:421)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at org.tempuri.myService.MyServiceStub.myService(MyServiceStub.java:182)
at org.tempuri.myService.MyServiceTest.main(MyServiceTest.java:55)
MyServiceResponseDocument lvdoc = stub.myService(myService4);