博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
webservice入门实例,CXF方式
阅读量:6684 次
发布时间:2019-06-25

本文共 2463 字,大约阅读时间需要 8 分钟。

1.下载CXF,及先关jar包。
CXF 下载地址:,选择“File”列中的zip格式下载。解压后可以看到一些文件夹:
└─apache-cxf-2.5.0
    ├─bin           各种工具
    ├─docs        API文档
    ├─etc          各种配置文件
    ├─lib           开发所需jar包
    ├─licenses  说明
    ├─modules  jar包
    └─samples  使用例子
samples文件夹中给提供了在各种环境下使用的例子,个人感觉只需参照样例即可。
本例中所需jar截图如下:
 
2.以天气预报webservice接口为例:
打开浏览器,输入
3.打开cmd进入CXF下的bin目录,执行
wsdl2java -d D:\\src -client http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
4.命令行会出现报错,如下:
WSDLToJava Error: http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl [44,19]: undefined element declaration 's:schema'
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl [85,13]: undefined element declaration 's:schema'
5.若出现4中的错误,则将第2个步骤中已打开的网页,CTRL+S,另存为weather.wsdl文件。
6.第六步生成代码,执行以下命令:
wsdl2java -d D:\\src -client f:/weather.wsdl
-d后面的路径是生成代码的本地路径,
-client后面是本地的wdsl文件。
执行成功后,在D盘SRC下一些java类。
7.把SRC下的java累拷贝到已有的项目或者新建的项目中,调试保证不报错。
8.建测试类,测试接口是否正确。
8.1测试远程地址代码如下:
/**
* JAVA 用 Apache CXF 调用 .NET 服务端 WebService 测试类
*
* @author wqmain
*/
public class WeatherTest {
public static void main(String[] args) throws Exception {
URL url = new URL("http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl");
WeatherWebService w= new WeatherWebService(url);
WeatherWebServiceSoap ws = w.getWeatherWebServiceSoap();
ArrayOfString a = ws.getSupportProvince();
System.out.println(a.getString());
}
}
8.2测试本地WSDL代码如下:
/**
* JAVA 用 Apache CXF 调用 .NET 服务端 WebService 测试类
*
* @author wqmain
*/
public class WeatherTest {
 
public static void main(String[] args) throws Exception {
 
java.net.URL wsdlLocation = ClassLoader.getSystemResource("weather.wsdl");
 
JaxWsDynamicClientFactory dcf =JaxWsDynamicClientFactory.newInstance();
org.apache.cxf.endpoint.Client client = dcf.createClient(wsdlLocation);//指定classpath下的WSDL文件
// dcf.createClient("D:/apache-cxf-2.7.0/bin/weather.wsdl");//指定WSDL文件的绝对路径
Object[] provinces = client.invoke("getSupportProvince");
if(provinces != null && provinces.length > 0) {
for(Object province : provinces) {
System.out.println(((ArrayOfString)province).getString());
}
}
Object[] citys = client.invoke("getSupportCity","浙江");
if(citys != null && citys.length > 0) {
for(Object city : citys) {
System.out.println(((ArrayOfString)city).getString());
}
}
Object[] weathers = client.invoke("getWeatherbyCityName", "杭州");
if(weathers != null && weathers.length > 0) {
for(Object weather : weathers) {
System.out.println(((ArrayOfString)weather).getString());
}
}
}
 
}
 

转载于:https://www.cnblogs.com/piaopiaoqun/p/6171155.html

你可能感兴趣的文章
GCD之dispatch queue
查看>>
【Oracle】-初识PL/SQL
查看>>
黄聪:超实用的PHPExcel[导入][导出]实现方法总结
查看>>
模板变量,过滤器和静态文件引入
查看>>
Oracle 中的 Schema
查看>>
Web APi之认证(Authentication)两种实现方式后续【三】(十五)
查看>>
一条语句简单解决“每个Y的最新X”的SQL经典问题
查看>>
(转)链接服务器——获取EXCEL数据
查看>>
Go数组
查看>>
javascript在我的工作的用法
查看>>
市场活动课件:SQL Server 索引优化
查看>>
转 .NET4.5之初识async与await
查看>>
[React ] React Fundamentals: Component Lifecycle - Mounting Usage
查看>>
How to install Bekeley Extension Software Switch(BESS)?
查看>>
MySql数据库笔试题总结
查看>>
CocoaPods使用详细说明
查看>>
SQL那些事儿(十一)--ODBC,OLE-DB,ADO.NET区别[转]
查看>>
Logback中文文档(三):配置
查看>>
【java】【多线程】等待开启的多个线程都执行完成,再做事情,怎么实现
查看>>
java 判断String字符串是不是json数据
查看>>