用java实现简单快速的webservice客户端/数据采集器(支持soap1.1和soap1.2标准,支持utf-8编码)
前言:
用了cxf,axis等各种wbeservice实现库,简单试用了一下动态调用的方式,很不满意,完全无法满足业务的需要,所以自己实现了一个webservice采集客户端,方便动态调用外部webservice接口。
一、实现的功能
1、soap1.1客户端(soap1.1采集器)
2、soap1.2客户端(soap1.2采集器)
3、公共接口访问器
4、结果集获取(直接获取结果中的Result节点)
5、解析器,实现xml与java格式互转(支持格式:List,Map,String,Array,List<Map<String,String>>)
6、解析器与采集器分离,采集完之后可以自行解析xml结果
二、开源项目地址及下载
本项目依赖dom4j-1.6.1.jar和jaxen1.1.6.jar两个包
源码下载地址:http://download.csdn.net/detail/eguid_1/9781645
github项目地址:
三、使用方式及测试结果
Client client1=new SoapClient();
//命名空间
client1.setXmlns("http://WebXml.com.cn/");
//接口访问地址,方法名
String xml1=client1.access("http://ws.webxml.com.cn/WebServices/WeatherWS.asmx","getRegionCountry");
System.err.println("采集器返回的结果:"+xml1);
List<String> x=SoapResolver.xmlToList(xml1);
System.err.println("转换后的结果:"+x);
完整结果xml:
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><getRegionCountryResponse
xmlns="http://WebXml.com.cn/"><getRegionCountryResult><string>阿尔及利亚,3320</string><string>阿根廷,3522</string><string>阿曼,3170</string><string>阿塞拜疆,3176</string><string>埃及,3317</string><string>埃塞俄比亚,3314</string><string>爱尔兰,3246</string><string>奥地利,3237</string><string>澳大利亚,368</string><string>巴基斯坦,3169</string><string>巴西,3580</string><string>保加利亚,3232</string><string>比利时,3243</string><string>波兰,3235</string><string>朝鲜,3163</string><string>丹麦,3245</string><string>德国,3238</string><string>俄罗斯,3225</string><string>法国,3241</string><string>菲律宾,3151</string><string>芬兰,3248</string><string>刚果(金),3377</string><string>哥伦比亚,3524</string><string>古巴,344</string><string>韩国,3162</string><string>荷兰,3244</string><string>加拿大,347</string><string>加纳,3313</string><string>柬埔寨,3154</string><string>捷克,3236</string><string>克罗地亚,3233</string><string>肯尼亚,3316</string><string>拉托维亚,3228</string><string>老挝,3155</string><string>立陶宛,3227</string><string>马达加斯加,3312</string><string>马尔代夫,3166</string><string>马来西亚,3158</string><string>马里,3319</string><string>美国,346</string><string>蒙古,3165</string><string>秘鲁,3578</string><string>缅甸,3160</string><string>莫桑比克,3311</string><string>墨西哥,345</string><string>南非,3310</string><string>尼泊尔,3164</string><string>尼日利亚,3379</string><string>挪威,3250</string><string>葡萄牙,3239</string><string>日本,3161</string><string>瑞典,3249</string><string>瑞士,3242</string><string>塞内加尔,3318</string><string>沙特阿拉伯,3172</string><string>斯里兰卡,3167</string><string>泰国,3159</string><string>坦桑尼亚,3315</string><string>突尼斯,3321</string><string>土耳其,3229</string><string>委内瑞拉,342</string><string>文莱,3153</string><string>乌克兰,3226</string><string>乌兹别克斯坦,3175</string><string>西班牙,3240</string><string>希腊,3230</string><string>新加坡,3157</string><string>新西兰,369</string><string>匈牙利,3234</string><string>叙利亚,3174</string><string>牙买加,343</string><string>伊朗,3171</string><string>意大利,3231</string><string>印度,3168</string><string>印度尼西亚,3152</string><string>英国,3247</string><string>约旦,3173</string><string>越南,3156</string><string>智利,3523</string></getRegionCountryResult></getRegionCountryResponse></soap:Body></soap:Envelope>
采集器返回的结果:
<getRegionCountryResult><string>阿尔及利亚,3320</string><string>阿根廷,3522</string><string>阿曼,3170</string><string>阿塞拜疆,3176</string><string>埃及,3317</string><string>埃塞俄比亚,3314</string><string>爱尔兰,3246</string><string>奥地利,3237</string><string>澳大利亚,368</string><string>巴基斯坦,3169</string><string>巴西,3580</string><string>保加利亚,3232</string><string>比利时,3243</string><string>波兰,3235</string><string>朝鲜,3163</string><string>丹麦,3245</string><string>德国,3238</string><string>俄罗斯,3225</string><string>法国,3241</string><string>菲律宾,3151</string><string>芬兰,3248</string><string>刚果(金),3377</string><string>哥伦比亚,3524</string><string>古巴,344</string><string>韩国,3162</string><string>荷兰,3244</string><string>加拿大,347</string><string>加纳,3313</string><string>柬埔寨,3154</string><string>捷克,3236</string><string>克罗地亚,3233</string><string>肯尼亚,3316</string><string>拉托维亚,3228</string><string>老挝,3155</string><string>立陶宛,3227</string><string>马达加斯加,3312</string><string>马尔代夫,3166</string><string>马来西亚,3158</string><string>马里,3319</string><string>美国,346</string><string>蒙古,3165</string><string>秘鲁,3578</string><string>缅甸,3160</string><string>莫桑比克,3311</string><string>墨西哥,345</string><string>南非,3310</string><string>尼泊尔,3164</string><string>尼日利亚,3379</string><string>挪威,3250</string><string>葡萄牙,3239</string><string>日本,3161</string><string>瑞典,3249</string><string>瑞士,3242</string><string>塞内加尔,3318</string><string>沙特阿拉伯,3172</string><string>斯里兰卡,3167</string><string>泰国,3159</string><string>坦桑尼亚,3315</string><string>突尼斯,3321</string><string>土耳其,3229</string><string>委内瑞拉,342</string><string>文莱,3153</string><string>乌克兰,3226</string><string>乌兹别克斯坦,3175</string><string>西班牙,3240</string><string>希腊,3230</string><string>新加坡,3157</string><string>新西兰,369</string><string>匈牙利,3234</string><string>叙利亚,3174</string><string>牙买加,343</string><string>伊朗,3171</string><string>意大利,3231</string><string>印度,3168</string><string>印度尼西亚,3152</string><string>英国,3247</string><string>约旦,3173</string><string>越南,3156</string><string>智利,3523</string></getRegionCountryResult>
转换后的结果:
[阿尔及利亚,3320, 阿根廷,3522, 阿曼,3170, 阿塞拜疆,3176, 埃及,3317, 埃塞俄比亚,3314, 爱尔兰,3246, 奥地利,3237, 澳大利亚,368, 巴基斯坦,3169, 巴西,3580, 保加利亚,3232, 比利时,3243, 波兰,3235, 朝鲜,3163, 丹麦,3245, 德国,3238, 俄罗斯,3225, 法国,3241, 菲律宾,3151, 芬兰,3248, 刚果(金),3377, 哥伦比亚,3524,
古巴,344, 韩国,3162, 荷兰,3244, 加拿大,347, 加纳,3313, 柬埔寨,3154, 捷克,3236, 克罗地亚,3233, 肯尼亚,3316, 拉托维亚,3228, 老挝,3155, 立陶宛,3227, 马达加斯加,3312, 马尔代夫,3166, 马来西亚,3158, 马里,3319, 美国,346, 蒙古,3165, 秘鲁,3578, 缅甸,3160, 莫桑比克,3311, 墨西哥,345, 南非,3310, 尼泊尔,3164, 尼日利亚,3379, 挪威,3250, 葡萄牙,3239,
日本,3161, 瑞典,3249, 瑞士,3242, 塞内加尔,3318, 沙特阿拉伯,3172, 斯里兰卡,3167, 泰国,3159, 坦桑尼亚,3315, 突尼斯,3321, 土耳其,3229, 委内瑞拉,342, 文莱,3153, 乌克兰,3226, 乌兹别克斯坦,3175, 西班牙,3240, 希腊,3230, 新加坡,3157, 新西兰,369, 匈牙利,3234, 叙利亚,3174, 牙买加,343, 伊朗,3171, 意大利,3231, 印度,3168, 印度尼西亚,3152, 英国,3247,
约旦,3173, 越南,3156, 智利,3523]
另外一种用法:
Client =new SoapClient();
//接口访问地址
client.setUrl(urlString);
//命名空间
client.setXmlns(xmlns);
Map<String,String> map=new HashMap<String,String>();
map.put("UserName",userName);
map.put("Password",password);
client.setHeader(map);//设置凭证
client.access(soapAction);//调用接口方法
用java实现简单快速的webservice客户端/数据采集器(支持soap1.1和soap1.2标准,支持utf-8编码)的更多相关文章
- java使用命令wsimport构建WebService客户端
wsimport -d d: -keep -extension -p com.demo.client http://192.168.33.3//RECEPTIONws.ASMX?WSDL 客户端:在J ...
- webService 客户端接口调用【java】
最近实际项目中使用到了WebService,简单总结下使用方式: 1.拿到接口:http://*******:8080/osms/services/OrderWebService?wsdl 我们可以将 ...
- (转)wsdl文件用SoapUI快速创建WebService,CXF生成客户端代码
原文地址:http://blog.csdn.net/fjekin/article/details/62234861 一.前言 最近项目接触到2C的很多接口,提供接口文档和WSDL文件,一开始测试接口都 ...
- 根据wsdl文件,Java工程自动生成webservice客户端调用
根据wsdl文件,Java工程自动生成webservice客户端调用 1,工具:带有webservice插件的myeclips 2,步骤: (1),新建一个Java工程:relationship (2 ...
- 利用Java编写简单的WebService实例
使用Axis编写WebService比較简单,就我的理解,WebService的实现代码和编写Java代码事实上没有什么差别,主要是将哪些Java类公布为WebService. 以下是一个从编写測试样 ...
- 利用Java编写简单的WebService实例-转载
使用Axis编写WebService比较简单,就我的理解,WebService的实现代码和编写Java代码其实没有什么区别,主要是将哪些Java类发布为WebService.下面是一个从编写测试例子到 ...
- 使用Axis2编写webservice客户端,服务端
1.编写客户端 Axis2开发WebService客户端 的3种方式 [参考帖子] http://blog.csdn.net/wangjinwei6912/article/details/851259 ...
- 使用GSoap开发WebService客户端与服务端
Gsoap 编译工具提供了一个SOAP/XML 关于C/C++ 语言的实现, 从而让C/C++语言开发web服务或客户端程序的工作变得轻松了很多. 用gsoap开发web service的大致思路 我 ...
- 阿里巴巴Java开发手册快速学习
Java作为一门名副其实的工业级语言,语法友好,学习简单,大规模的应用给代码质量的管控带来了困难,特别是团队开发中,开发过程中的规范会直接影响最终项目的稳定性. 善医者“未有形而除之”,提高工程健壮性 ...
随机推荐
- ios系统判断某些适配 __IPHONE_OS_VERSION_MAX_ALLOWED
由于app的最新设计字体是ios9之后的平方字体,但app最低支持ios7,so...想在常量配置文件类里统一适配下字体,如下: //适配字体,ios9及以上系统使用新字体--平方字体 #if __I ...
- SSH框架搭建 详细图文教程
转载请标明原文地址 一.什么是SSH? SSH是JavaEE中三种框架(Struts+Spring+Hibernate)的集成框架,是目前比较流行的一种Java Web开源框架. SSH主要用于Jav ...
- 利用子集构造法实现NFA到DFA的转换
概述 NFA非有穷自动机,即当前状态识别某个转换条件后到达的后继状态不唯一,这种自动机不便机械实现,而DFA是确定有限状态的自动机,它的状态转换的条件是确定的,且状态数目往往少于NFA,所以DFA能够 ...
- C#1所搭建的核心基础
一,委托 委托封装了包含特殊返回类型和一组参数的行为,类似包含单一方法接口. 委托类型声明中所描述的类型签名决定了哪个方法可以用于创建委托实例,同时决定了调用的签名:委托类型实际上只是参数类型的一个列 ...
- 学习java的感受
学习java有一段时间了,发现现在只是才了解java,还在门槛外边. 有时候真感觉这是不是一种外星语言,各种方法各种类各种借口,总是傻傻分不清. 学过的知识过一个星期就开始模糊,有时半夜睡不着的时候 ...
- 蓝桥杯-李白打酒-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- MapControl Application 添加自定义的工具条
现在想用二次开发做一些东西,然后需要自定义的工具条,但是如何向MapControl Application 添加自定义的工具条呢,经过多次试验后,终于找到了相应的方法(左图是添加自定义的工具条之前,右 ...
- Ehcache 的简单实用 及配置
Ehcache 与 spring 整合后的用法,下面是一个Ehcache.xml配置文件: 通用的缓存策略 可以用一个 cache: <?xml version="1.0" ...
- 解决xmapp中Apache端口号占用问题
[原]解决 "安装xmapp后Apache不能正常启动" 问题 小伙伴们安装xmapp后发现Apache不能正常开启,下面给出了不同情况的解决办法,可以分为以下几种情况分析问题: ...
- jQuery选择器---层次选择器总结
今天要分享的是jQuery层次选择器,层次选择器的分类如图: 接下来就开始了 要不先养养眼精神一下: 开始1.祖先选择器: 案例: <form> <label>Name:< ...