java service client,web service client问题(转)

说来奇怪,昨夜调了很久没成功,今天上来第一次就成功了。

这次的实验是为了获得WS提供的一个person复杂对象其中的某一属性。

服务端提供getPerson,getPersons接口。getPerson根据PersonId提供一个Person对象。而Person包含三个属性,personid,firstname,lastname所以说这个实验的主要目的就是去实验一下非纯字符或数字操作的WS服务的客户端怎么做。

具体是这么来做的:

1、在ECLIPSE里新建一个JAVA PROJECT

2、在项目名称上点右键,加入add xfire nature将xfire所需要的库导入进来。关于XFIRE的ECLIPSE插件可以参看这篇文章http://xfire.codehaus.org/Eclipse+Plugin

20061004_765996fcaa22c108a79c0a0738ffa039.jpg

3、点击新建->其他,选择xfire的eclipse插件提供的代码生成工具

20061004_0a3105f29fafb89f1e77059646736050.jpg

4、填入WSDL的URL以及选择要将代码输出的项目名称

20061004_f7ae964129c47fa02886f27f8cdd7c08.jpg

5、确定后就能够看到生成的代码了,生成了很多文件,这些都是根据WSDL生成的,因为服务端提供的person是个复杂对象,不是简单的一个加减操作,所以需要对复杂对象进行生成。

20061004_eab096e46c2b6341c7535db8df7f6a4f.jpg

这里最关键的是两个文件,PersonWebServiceClient以及PersonWebServicePortType(interface)。

PersonWebServiceImpl是PersonWebServicePortType的实现。

6、下面这部当然就是我们自己开始写客户端了,我们写个junit的测试

先将junit库导入到项目中,右键项目名称,选择properties-->java build path-->libraries-->add library-->JUNIT导入JUNIT库,然后就能看到:

20061004_c75c491ff74fd777693a5fd4331a2065.jpg

准备工作还没有完成,但是先不做了,等一会再回来做。

现在开始写case吧。

我建立了一个命叫motion.test的package,在里面加入文件WebServiceTest.java

package motion.test;

import junit.framework.TestCase;

public class WebServiceTest extends TestCase {

}

现在我们加入test:

public void testShow(){

PersonWebServiceClient service = new PersonWebServiceClient();

PersonWebServicePortType client = service.getPersonWebServiceHttpPort();

System.out.print(client.getPerson("1").getFirstName());

}

这个test的目的是想打印出personid为1的那个person的firstname。

现在运行一下,如果不出意外肯定有错误

004.gif

看下错误怎么说吧:

20061004_1e135c245400cf09cb8eaa995cc57f53.jpg

原来是有些包没导进来。

然后我们再右键点击项目,选xfire那项。

20061004_0ed24209c1e22d1d989334af6b4a09e3.jpg

将Commons Codec 和Commons HttpClient前面的勾打上,确定返回,run WebServiceTest.java as junit test

惊喜了一会突然发现这不是我们要的结果啊,我们是要显示那个personid为1的那个人的firstname,难道他的firstname是这种奇怪的东西吗?

其实这只是xml元素的JAXB的表示形式。如果我们需要得到具体的值,要用getValue()方法,修改刚才的显示语句如下:

System.out.print(client.getPerson("1").getFirstName().getValue());

再次run WebServiceTest.java as junit test

Console里出现:yang

这是便正确的结果。

这个实验其实是非常简单的,但是通过这个实验能够看出很多细节是需要去考虑的。

对于选了web service课程或者想了解这方面的内容的人来说,我希望通过这个能够帮助你掌握一些客户端的制作技术。

在工具盛行的今天,做个服务端已经是一项再简单不过的事情了,而客户端要相对麻烦一些。

这篇就是一个入门级的复杂对象客户端的制作过程。我也是刚刚开始学习这方面的知识,所以如果我有什么错误欢迎您来指出,我也很乐意与你讨论这些问题,希望大家都能一点一点的进步。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值