Axis是啥:
Axis全称Apache eXtensible Interaction System,是apache组织下的一个开源项目,用来做webservice开发的,有java版的实现,也有c++版的实现,其前身最早是IBM的SOAP4J,后来捐给Apache后改名Apache SOAP,也就是支持SOAP1.1的那个版本,到现在的AXIS已经是第三代了,AXIS对Apache SOAP的改进有很多,比如用SAX代替以前的DOM,增加对WSDL的支持,支持SOAP1.2等等
Webservice
WebService是一种跨编程语言和跨操作系统平台的远程调用技术。
服务端程序采用java编写,客户端程序则可以采用其他编程语言编写,反之亦然!指服务端程序和客户端程序可以在不同的操作系统上运行。
XML+XSD,SOAP和WSDL就是构成WebService平台的三大技术。
SOAP协议定义了SOAP消息的格式,SOAP协议是基于HTTP协议的,SOAP也是基于XML和XSD的,XML是SOAP的数据编码方式。
WSDL文件保存在Web服务器上,通过一个url地址就可以访问到它。客户端要调用一个WebService服务之前,要知道该服务的WSDL文件的地址。
Axis调用Webservice步骤:
生成客户端代码:
soupheader是啥:
在Web Services方法进行通信使用SOAP遵循标准的SOAP格式,该格式的一部分是在XML文档中编码的数据。XML文档包含一个Envelope根元素(由必需的Body元素和可选的Header元素构成)。Body元素由特定于消息的数据构成。可选的Header元素可以包含不与特定消息直接相关的其他信息。
添加soupheader编码实现
import org.apache.axis.client.Stub;
import org.apache.axis.message.SOAPHeaderElement;
import javax.xml.namespace.QName;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPFactory;
public static void axisCall() throws Throwable {
ISysWebServiceServiceLocator locator = new ISysWebServiceServiceLocator();
ISysNewsToRMTWebService webService = locator.getISysNewsToRMTWebServicePort(new URL(wsdl));
String namespaceURI = "http://sys.webservice.client";
SOAPElement soapElement = SOAPFactory.newInstance().createElement("RequestSOAPHeader","tns",namespaceURI);
SOAPElement soapElementUser = SOAPFactory.newInstance().createElement("user","tns",namespaceURI);
soapElementUser.addTextNode("root");
SOAPElement soapElementPwd = SOAPFactory.newInstance().createElement("password","tns",namespaceURI);
soapElementPwd.addTextNode("12312");
soapElement.addChildElement(soapElementUser);
soapElement.addChildElement(soapElementPwd);
SOAPHeaderElement auth = new SOAPHeaderElement(soapElement);
((Stub)webService).setHeader(auth);
SysForm form = new SysForm();
form.setCreator("123456");
AjaxResult result = webService.findList(form);
System.out.println(result.getMsg());
}