整个过程还是比较简单的:
1、用SOAP UI工具测试你发布的东西到底是否可以执行
<soapenv:Header>
<Security>
<UsernameToken xmlns="http://siebel.com/webservices">用户名</UsernameToken>
<PasswordText xmlns="http://siebel.com/webservices">密码</PasswordText>
</Security>
</soapenv:Header>
(Siebel服务器无法通过url访问,只能用wsdl来做。)
2、用elicpse生成对应的Web Service Client 客户端
4、就是因为只有加上这个东西才可以访问:
所以需要修改类:*_BindingStub,拼接发送的报文:
添加的代码:
org.apache.axis.client.Call _call = createCall();
String AUTH_PREFIX = "";
String AUTH_NS = "";
try {
SOAPFactory soapFactory= SOAPFactory.newInstance();
SOAPElement wsSecHeaderElm = soapFactory.createElement("Security", AUTH_PREFIX, AUTH_NS);
SOAPElement userNameElm = soapFactory.createElement("UsernameToken",AUTH_PREFIX, AUTH_NS);
SOAPElement passwdElm = soapFactory.createElement("PasswordText",AUTH_PREFIX, AUTH_NS);
userNameElm.setAttribute("xmlns", "http://siebel.com/webservices");
passwdElm.setAttribute("xmlns", "http://siebel.com/webservices");
userNameElm.addTextNode("用户名");
passwdElm.addTextNode("密码");
wsSecHeaderElm.addChildElement(userNameElm);
wsSecHeaderElm.addChildElement(passwdElm);
SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement(wsSecHeaderElm);
soapHeaderElement.setMustUnderstand(false);
_call.addHeader(soapHeaderElement);
} catch (SOAPException e) {
System.out.println("e=="+e.toString());
e.printStackTrace();
}
_call.setOperation(_operations[0]);
_call.setUseSOAPAction(true);
5、再自己写调用类来调用,MyCallWebService这个是我的调用类