Axis调用Webservice添加SoupHeader

简介: Axis调用Webservice添加SoupHeader

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());
     }
相关文章
|
自然语言处理 Java
使用axis调用WebService,Java WebService调用工具类
使用axis调用WebService,Java WebService调用工具类
1689 0
使用axis调用WebService,Java WebService调用工具类
|
Java Apache 网络架构
Webservice调用方式:axis,soap详解
转自:[url] http://blog.csdn.net/baiboy4493/archive/2009/03/13/3987526.aspx [/url]  调用webservice,可以首先根据wsdl文件生成客户端,或者直接根据地址调用,下面讨论直接调用地址的两种不同方式:axis...
1554 0
|
安全 Java C#
【知识积累】服务器端获取客户端的IP地址(当客户端调用由Axis开发的WebService)
由于项目中一个小的模块需要获取客户端的IP地址以保证安全调用webservice接口,项目中客户端使用C#编写,服务器端使用Java编写,服务器端与客户端采用Axis开发的WebService进行通信。服务器端维护IP白名单列表,只有IP地址在白名单中的客户端才可以成功调用到接口,获得服务。
257 0