原文地址:xfire的Client的WSDL调用
原文作者:燃尽成灰的C君
xfire的Client的WSDL调用
也只是想测试一下,如果只知道wsdl文件的情况下,用xfire的client如何调用WS呢。
在原来的基础上,改写了下easyserver,让它的get方法返回一个IUser类型:
public class IUser implements Serializable {
private static final long serialVersionUID = 1993559722178981779L;
private Integer id;
private String name;
private String email;
...
getter and setter
}
我的get调用的单元测试是这样的:
public void testGetUserFromWsdl() throws MalformedURLException, Exception {
Client client = new Client(new URL(
'http://localhost:8080/easyserver/services/UserService?wsdl'));
Object[] results = client.invoke('get', new Object[] {null});
System.out.println('results:' + results[0]);
Document xmlTree = (Document) results[0];
anylizeElement(xmlTree);
}
最初我查看这个results的时候,返现打印出来的results[0],就是一个null,如下字符串:
results:[#document: null]
有点茫然了,跑到easyserver上设置了断点,发现是正常调用了的,并且还成功返回了IUser对象,为啥这边是null呢。
后来在网上查找了一下资料,找到一个例子,也是遇到和我相同的情况,它使用了这个anylizeElement方法来解析xml从而得到了里面的返回值,他的anylizeElement方法如下:
private void anylizeElement(Document xmlTree) {
Element element = xmlTree.getDocumentElement();
NodeList children = element.getChildNodes();
for (int i = 0; i < children.getLength(); i++) {
Node node = children.item(i);
System.out.print('NodeName:' + node.getNodeName());
System.out.println('tNodeValue:' + node.getNodeValue());
stepThrough(node);
}
}
private void stepThrough(Node start) {
for (Node child = start.getFirstChild(); child != null; child = child
.getNextSibling()) {
if (child instanceof Node)// 去除多余的空白
{
System.out.print('NodeName:' + child.getNodeName());
System.out.println('tNodeValue:' + child.getNodeValue());
}
if (child != null)
stepThrough(child);
}
}
其中用到的包和类是:
import org.codehaus.xfire.client.Client;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
单元测试打印出的效果如下:
results:[#document: null]
NodeName:email NodeValue:null
NodeName:#text NodeValue:luohua@126.com
NodeName:id NodeValue:null
NodeName:#text NodeValue:1
NodeName:name NodeValue:null
NodeName:#text NodeValue:luohua
看来通过wsdl倒是立马就可以调用WS了,不过返回的这个XML倒的确比较难过。比起以前的通过接口去调用,或者spring注入BEAN的方法,都要显得笨些。不知道有没有合适的类,可以将这个XML转换为我们的IUser呢。不过client又没有IUser类。呵呵。
转自:http://sillycat.iteye.com/blog/562769

xfire的Client的WSDL调用相关推荐

  1. java xfire client_xfire的client的JAVA调用方式

    xfire的client的JAVA调用方式 平时我们调用xfire都是实现了spring的FactoryBean接口,写了一个工具类,将xfire的client bean配置在spring容器中管理并 ...

  2. mule 基于wsdl调用cxf web service

    最近看mule的一个文档mule esb 3 concepts,介绍了mule esb的一些基本概念.看完后,对soa,esb,服务等都有了更深的认识.今天试验通过mule进行cxf web serv ...

  3. CXF 生成Web Service Client(将WSDl 转化成 Java代码)

    CXF 是什么 Apache CXF一个开源的Service框架,它实现了JCP与Web Service中一些重要标准. CXF简化了构造,集成,面 向服务架构(SOA)业务组件与技术的灵活复用.在C ...

  4. [Axis2与Eclipse整合开发Web Service系列之一] 生成Web Service Client(将WSDl 转化成 Java代码)

    需求描述 有一个WSDL地址, 需要把它转化成Java代码调用. IDE环境要求 这里使用Eclipse自动生成.这里的eclipse需要安装有Web开发插件. 步骤 1. 首先新建一个 " ...

  5. springCloud-4.RestTemplat的使用(两个client之间的调用)

    2019独角兽企业重金招聘Python工程师标准>>> 1.启动eurka-server 2.在client端口8080编写一个hello world方法,并且能访问 3.创建cli ...

  6. golang(5):编写WebSocket服务,client和html5调用

    本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/46882777 转载请必须注明出处! 1.关于websocket HTML5定义了 ...

  7. thunder client轻量级api调用小记

    很早之前用的postman,后面发现postman感觉挺杂乱的 于是开始研究thunder client怎么玩 activity:自己调用的历史纪录 clolections:纯字面意思搭建自己的集合( ...

  8. iib 里面wsdl调用的坑

    当做IBM的WMS开发时,iib有时真的很没有道理,而且不注意,你还发现不了问题!!! 在做SOAP Input 节点,对外暴露WS接口时,用自建的WebService生成的WSDL来导入到SOAP  ...

  9. java ee webservice_javaEE调用webservice总结【利用WSDL】(转载)

    一.MyEclipse利用网上公开发布WSDL文件,创建WebService Client,进行调用WebService: 1.  打开MyEclipse,新建一个Web Project;然后新建 一 ...

最新文章

  1. 导购网站 服务器,导购网站云服务器配置
  2. 田志刚:要你共享,但不告诉你共享什么
  3. Cocos2d-x手机游戏开发行业背景分析
  4. Analytical Chemistry | 深度学习实现高分辨率LC-MS数据中的精确峰检测
  5. javabean总结
  6. 小小知识点(十五)——origin pro 2018 安装和消除demo字样
  7. Oracle 表及表空间(一)
  8. 转python version 2.7 required,which was not found in the registry
  9. FragmentActivity TopFragment
  10. 【b站黑马程序员C++视频学习笔记-文件操作】
  11. 怎么卸载apowerrec_怎么禁用或卸载自带应用
  12. html5 打字机效果,逼真的js打字机效果插件
  13. Discriminative Reasoning for Document-level Relation Extraction
  14. Elasticsearch 搜索引擎开发实战
  15. JavaWeb HTTP状态 405 - 方法不允许
  16. 微信支付分 - 查询支付分订单API
  17. 单片机驱动SD3077时钟芯片
  18. php 正方,php 模拟登陆正方教务系统
  19. docker镜像逆向Dockerfile
  20. PRD-产品需求说明文档

热门文章

  1. 四、buildroot中添加自己的软件包
  2. 大学校园双向选择洽谈会总结
  3. 【esp32lvgl】-2.4 #lvgl-SD卡文件系统
  4. 论文笔记: 多标签学习 LSML
  5. 如何下载popper.js/popper.min.js
  6. ML(机器学习)神经网络,阶跃函数,sigmoid激活函数
  7. 嘉立创PCB制造工艺参数整理
  8. Python数据可视化:动态柱状图实现全过程指南
  9. 企业会计信息化风险控制体系探讨
  10. vivado如何评估_在Vivado下进行功耗估计和优化