Apache cxf 测试WebService接口

apache cxf是流行的编写webservice的工具,我们也可以用它测试webservice接口,apache-cxf工具带有wsdl2java这个命令 行下的工具,我们可以用它将webservice接口导出本地类,然后再调用测试。下面是个简单的例子。
一个查询电话号码归属地的webservice接口http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl,下载apache-cxf包,wsdl2java工具在其bin目录下,我们执行wsdl2java -client http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl命令,就可以把该webservice接口导出,生成本地类,将生成的代码包复制到我们的工程代码中。
编写我们的测试代码:

    package com.yeetrack.cxf;

    import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

    import cn.com.webxml.MobileCodeWSSoap;

    /**
     * @author youthflies
     * yeetrack.com
     */
    public class App 
    {
        public static void main( String[] args )
        {
            System.out.println( "使用apache-cxf测试webservice接口" );
            //创建工厂类
            JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
            //设置要测试的接口类,MobileCodeWSSoap是由apache-cxf生成的
            factory.setServiceClass(MobileCodeWSSoap.class);
            //设置webservice地址
            factory.setAddress("http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx");
            MobileCodeWSSoap mobileCodeWSSoap = (MobileCodeWSSoap) factory.create();

            //测试getMobileCodeInfo接口,需要两个参数,第一个为手机号码(下面的号码,  是随便写的),第二个为用户id(留空即可)。可以添加校验条件,如果要编写测试用例,可以利用junit或者testng。
            System.out.println(mobileCodeWSSoap.getMobileCodeInfo   ("13876546787", ""));
        }
    }  

运行结果如下图:

    使用apache-cxf测试webservice接口
    2013-4-29 11:16:22 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
    信息: Creating Service {http://WebXml.com.cn/}MobileCodeWSSoapService from class cn.com.webxml.MobileCodeWSSoap
    13876546787:海南 海口 海南移动全球通卡

例子是用maven管理,下面是我的pom.xml文件。

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.yeetrack</groupId>
    <artifactId>cxf</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>cxf</name>
    <url>http://maven.apache.org</url>

    <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
      <dependency>
          <groupId>org.apache.geronimo.specs</groupId>
          <artifactId>geronimo-servlet_2.5_spec</artifactId>
          <version>1.2</version>
      </dependency>

      <dependency>
          <groupId>org.apache.cxf</groupId>
          <artifactId>cxf-rt-frontend-jaxws</artifactId>
          <version>2.7.3</version>
      </dependency>
      <dependency>
          <groupId>org.apache.cxf</groupId>
          <artifactId>cxf-rt-transports-http</artifactId>
          <version>2.7.3</version>
      </dependency>
          <dependency>  
              <groupId>org.slf4j</groupId>  
              <artifactId>slf4j-api</artifactId>  
              <version>1.5.8</version>  
          </dependency>  
          <dependency>  
              <groupId>org.slf4j</groupId>  
              <artifactId>slf4j-jdk14</artifactId>  
              <version>1.5.8</version>  
          </dependency>  
    </dependencies>
</project>

apache cxf 编写web service接口样例程序

发表评论

电子邮件地址不会被公开。 必填项已用*标注

(Spamcheck Enabled)