使用axis调用wsdl接口

Posted wf2010517141

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用axis调用wsdl接口相关的知识,希望对你有一定的参考价值。

1、需要用到的jar包如下:

axis.jar、axis-ant.jar、commons-discovery-0.2.jar、commons-logging-1.0.4.jar、jaxrpc.jar、log4j-1.2.8.jar、saaj.jar、wsdl4j-1.5.1.jar

2、调用代码举例如下

    /**
     * 查询用户手机信息
     * 这个接口是网上免费提供的接口,需要电脑联网才能访问
     */
    public static void getMobileCodeInfo(){
        String endpoint = "http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl";
        String nameSpace = "http://WebXml.com.cn/";
        String method = "getMobileCodeInfo";
        try {
            //新建服务
            Service service = new Service();
            //生成客户端
            Call call = (Call) service.createCall();
            //配置endpoint
            call.setTargetEndpointAddress(new URL(endpoint));
            //配置命名空间和方法
            call.setOperationName(new QName(nameSpace,method));
            //配置参数名和参数值
            call.addParameter(new QName(nameSpace,"mobileCode"), XMLType.XSD_STRING, ParameterMode.IN);
            call.addParameter(new QName(nameSpace,"userID"), XMLType.XSD_STRING, ParameterMode.IN);
            Object[] paramValues = new Object[]{"18705187159",""};
            //设置返回值类型
            call.setReturnType(XMLType.XSD_STRING);
            //SoapAction的配置,在浏览器url中输入wsdl,在结果中搜索soapAction,如果有值,则需要设置,如果没有值,则设不设都行
            call.setUseSOAPAction(true);
            call.setSOAPActionURI(nameSpace+method);
            //调用接口
            String result = (String) call.invoke(paramValues);
            
            System.out.println("result->"+result); //result->18705187159:江苏 南京 江苏移动全球通卡
        } catch (Exception e) {
            System.out.println("接口getMobileCodeInfo调用失败!异常信息如下:");
            System.out.println(e.toString());
        }
    }
  /**
     * 查询实体类集合json
     * 这个接口是我自己在另一个eclipse中构造的接口,需要另一个项目中接口程序启动才能访问
     */
    public static void listBeanTest(){
        String endpoint = "http://localhost:8080/test2?wsdl";
        String nameSpace = "http://webservice.ws.glaway.com/";
        String method = "listBeanTest";
        try {
            //新建服务
            Service service = new Service();
            //生成客户端
            Call call = (Call) service.createCall();
            //配置endpoint
            call.setTargetEndpointAddress(new URL(endpoint));
            //配置命名空间和方法
            call.setOperationName(new QName(nameSpace,method));
            //配置参数名和参数值
            Object[] paramValues = new Object[0];
            //设置返回值类型
            call.setReturnType(XMLType.XSD_STRING);
            //SoapAction的配置,在浏览器url中输入wsdl,在结果中搜索soapAction,如果有值,则需要设置,如果没有值,则设不设都行
//            call.setUseSOAPAction(true);
//            call.setSOAPActionURI(nameSpace+method);
            //调用接口
            String result = (String) call.invoke(paramValues);
            
            System.out.println("result->"+result); //result->{"code":"success","data":[{"age":25,"name":"1"},{"age":8,"name":"2"}]}

        } catch (Exception e) {
            System.out.println("接口listBeanTest调用失败!异常信息如下:");
            System.out.println(e.toString());
        }
    }

 

以上是关于使用axis调用wsdl接口的主要内容,如果未能解决你的问题,请参考以下文章

Java调用wsdl,怎么实现

Axis2生成wsdl客户端代码并实现webservice调用

java程序怎么调用webservice接口,实现发送短信功能

java如何调用webservice接口

如何用axis的WSDL2Java生成webservice接口的客户端的java代码?

如何调用web service接口的某个方法