天天看点

一个简单的cxf框架调用webservice接口天气预报例子

wsdl URL:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl

cxf环境变量配置百度!

命令:wsdl2java http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl,会在本目录生成java代码。

如果报错,s:schemal.........................,解决方案:

1.先把网址上这个wsdl另存到桌面,记得后缀名是wsdl文件,然后删掉<s:element ref="s:schema"/>,有几个删几个。

  2.然后在CMD命令窗口里面cd到wsdl的存放目录,输入命令:wsdl2java 你保存的文件名称.wsdl,直接这样子会在本目录生成java代码,供你调用。

  3.需要的jar包:

activation.jar cxf-2.1.2.jar jaxb-impl-2.1.7.jar wsdl4j-1.6.2.jar xml-resolver-1.2.jar XmlSchema-1.4.2.jar

   如果有需要其他jar包的,请在cxf的lib目录下找,肯定够用,么必要去网上下载下。

下面是调用代码,把你生成的java代码导入改项目中即可。

package cn.com.client;

import java.util.List;

import org.apache.cxf.interceptor.LoggingInInterceptor;

import org.apache.cxf.interceptor.LoggingOutInterceptor;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

import cn.com.webxml.ArrayOfString;

import cn.com.webxml.WeatherWebServiceSoap;

public class Test {  

   public static void main(String[] args) throws Exception {  

       JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();  

       factory.getInInterceptors().add(new LoggingInInterceptor());  

       factory.getOutInterceptors().add(new LoggingOutInterceptor());  

       factory.setAddress("http://www.webxml.com.cn/WebServices/WeatherWebService.asmx");  

       factory.setServiceClass(WeatherWebServiceSoap.class);  

       WeatherWebServiceSoap client = (WeatherWebServiceSoap) factory.create();  

       ArrayOfString o = client.getWeatherbyCityName("北");

       //ArrayOfString o =client.getSupportProvince();

       System.out.println(o);

       List<String> strList = o.getString();  

       for (String str : strList) {  

           System.out.println(str);  

       }  

   }  

继续阅读