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类。呵呵。
分享到:
相关推荐
WSDL(Web Services Description Language)是用于定义Web服务接口的一种XML格式,它详细描述了服务的位置、服务的操作以及如何调用这些操作。XFire(现已被Apache CXF项目合并)是一个Java框架,它支持SOAP(Simple...
1、以下四个类调用了XmlSchema-1.1.jar包 因与cxf包xmlschema-core-*.jar 冲突 故重新打包 XmlSchema-1.1.jar 源码修改原类径的方法来重新打包避免冲突 源码放在javas.rar文件夹中 org.codehaus.xfire.wsdl11....
本篇将深入探讨XFire Web服务的调用代码及其相关知识点。 一、Web服务基础 Web服务基于开放标准,如SOAP(Simple Object Access Protocol)、WSDL(Web Services Description Language)和UDDI(Universal ...
Xfire是Java中的一个轻量级Web服务框架,它简化了Web服务的开发和部署,支持WSDL(Web Services Description Language)自动生成,使得服务消费者可以方便地找到并调用服务。 标题“Xfire调用WebService无法传递...
标题中的“xfire_client_jar”指的是XFire的客户端JAR文件,这是一款早期流行的Java Web服务框架,用于创建和消费Web服务。XFire(后被Apache CXF项目吸收)提供了一个简单、高效的API,使得开发者能够快速地构建...
在描述中提到的"Demo样板",通常是一个预配置的示例程序,用于演示如何使用xfire客户端来连接和调用Web服务。然而,由于每个Web服务都有其特定的WSDL(Web服务描述语言)文件,定义了服务的接口和操作,因此这个Demo...
在本案例中,"Xfire的client.zip"是一个包含了Xfire客户端代码的压缩包,主要用于调用Web服务。 Xfire客户端代码是实现与Xfire服务器通信的代码库,它可能包含了多种语言的实现,如Java、C#或Python等。这些代码...
标题中的“xfire+spring+webservice+client”是一个关于集成XFire、Spring框架和Web服务客户端的专题,这涉及到Java开发中的一项重要技术——Web服务的消费与提供。在这个主题下,我们将深入探讨以下几个核心知识点...
2. **创建Web Service客户端**:使用Xfire,你可以通过WSDL(Web Service Description Language)文件生成Web Service的客户端代理类。WSDL文件定义了服务的接口、操作、消息格式和地址。在Eclipse中,可以使用Xfire...
xfire_client是一个专门为客户端开发设计的工具包,它集成了多个关键的Java库,使得构建客户端应用程序变得更加便捷和高效。这个压缩包包含了多个核心组件和依赖库,它们各自扮演着不同的角色,共同为客户端开发提供...
3. **生成Java代码**:运行XFire的wsdl2java工具,指定WSDL文件的位置,它会生成一组Java类,包括服务接口、数据传输对象(DTOs)和代理类。服务接口定义了可以调用的Web服务方法,DTOs表示数据模型,代理类则负责...
本文将详细介绍 XFire 1.2.6 中的三种调用 Web 服务的方法:动态客户端(Dynamic Client)、代理工厂方法(Proxy Factory)和客户端/服务端 Stubs。 方法一:动态客户端(Dynamic Client) 动态客户端是最简单的 ...
XFire可以自动根据服务接口生成WSDL。 在提供的文件列表中,`readme.txt`可能包含了项目的说明和使用指南,而`XFireWebService`和`XFireWebClient`可能是包含服务端和客户端代码的目录。`XFireWebService`下的代码...
6. **生成WSDL**:使用XFire提供的工具,可以自动从服务接口生成WSDL文件。这一步通常涉及调用特定的API方法,例如`org.codehaus.xfire.service.ServiceFactory.createServiceDefinition()`。 7. **部署到服务器**...
7. **xfire-client.jar**:这是客户端使用的库,包含了发起Web服务请求和处理响应所需的类和方法。 8. **可能还会有其他依赖库,如log4j或xalan.jar,用于日志记录和XML转换等基础功能。 使用这些jar文件,开发者...
Xfire客户端库提供了工具,可以基于WSDL生成对应的客户端代理类,使得开发者能够像调用本地方法一样调用远程Web服务。 在实际操作中,首先启动xfire_server,确保Web服务已经准备好接收请求。服务器端启动后,它会...
1. **导入jar包**:标题和描述中提到的"xfire_client_jar"是Xfire客户端开发所需的jar包。这个压缩包通常包含Xfire的核心库、XML解析器、StAX(Streaming API for XML)和其他依赖库。解压后,需要将这些jar文件添加...
<bean id="xfireClient" class="org.springframework.xfire.client.XFireProxyFactoryBean"> <property name="wsdlLocation" value="http://example.com/MyWebService?wsdl"/> ``` 在这里,`serviceInterface`...
为了调用这个方法,我们可以使用Xfire的`Client`类。在`TestProperties`类中,我们创建了一个`Client`实例,并传入了Web服务的URL。 3. **读取配置文件**: 在实际开发中,我们通常将Web服务的URL等配置信息存储在...
1. 生成客户端代理:使用XFire的wsdl2java工具,根据WSDL文件生成Java客户端代码。 2. 使用客户端代理调用服务:创建服务代理对象,然后调用其方法即可。 ```java HelloWorldService client = new ...