您的位置:首页 > 运维架构 > Apache

java调用webservice WSDL形式接口之apache axis方式调用(一)

2018-01-31 17:59 573 查看
1. 先说一下什么是webservice

webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使用的接口。

(1)WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络应用间的交互。
(2)WebService实现不同语言间的调用,是依托于一个标准,webservice是需要遵守WSDL(web服务定义语言)/SOAP(简单请求协议)规范的。

2. 下面是介绍如何使用axis调用webservice

(1)先从官网下载axis相关jar包,地址:http://axis.apache.org/axis/

官方要求引入如下jar包(将lib下的jar引入即可)

axis-<version>/lib/axis.jar
axis-<version>/lib/jaxrpc.jar
axis-<version>/lib/saaj.jar
axis-<version>/lib/commons-logging-<version>.jar
axis-<version>/lib/commons-discovery-<version>.jar
axis-<version>/lib/wsdl4j-<version>.jar

我在项目中实际用到的最少jar如下:

H:\libs\axis.jar
H:\libs\jaxrpc.jar
H:\libs\commons-logging-1.0.4.jar
H:\libs\commons-discovery-0.2.jar
H:\libs\wsdl4j-1.5.1.jar

(2)具体代码实现

[java] view
plain copy

package ic;  

  

import javax.xml.rpc.ParameterMode;  

  

import org.apache.axis.client.Call;  

import org.apache.axis.client.Service;  

import org.apache.axis.encoding.XMLType;  

  

public class ICServiceTest1 {  

  

    public static void main(String[] args) {  

  

        try {  

  

            String endpoint = "http://localhost:3000/hy/gw/queryConsignOrder?wsdl";  

  

            Service service = new Service();  

            Call call = (Call) service.createCall();  

            call.setTargetEndpointAddress(endpoint);  

            // WSDL里面描述的接口名称(要调用的方法)  

            call.setOperationName("getLisQueryConsignOrder");  

            // 接口方法的参数名, 参数类型,参数模式  IN(输入), OUT(输出) or INOUT(输入输出)  

            call.addParameter("icSystem", XMLType.XSD_STRING, ParameterMode.IN);  

            call.addParameter("companyFlag", XMLType.XSD_STRING, ParameterMode.IN);  

            call.addParameter("consignOrderNo", XMLType.XSD_STRING, ParameterMode.IN);  

            call.addParameter("orderNo", XMLType.XSD_STRING, ParameterMode.IN);  

            // 设置被调用方法的返回值类型  

            call.setReturnType(XMLType.XSD_STRING);  

            //设置方法中参数的值  

            Object[] paramValues = new Object[] {"4PL","NJHY,NJHF","TC201309172206",""};  

            // 给方法传递参数,并且调用方法  

            String result = (String) call.invoke(paramValues);    

      

            System.out.println("result is " + result);  

        } catch (Exception e) {  

            e.printStackTrace();  

        }  

  

    }  

  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: