网站地图
  
  高级搜索
  首页   技术论坛   博客 派计划   产品中心   资源中心   银弹在线   商城  





Axis1.4 多参数传递(document/literal)    
#1楼
给作者发送短消息 给作者发送短消息 实名会员 
查看用户其他信息
总分 204 分
财富 437 goCom币
威望 104
排名 第 84 名
段位 新手必读

    下面介绍一下使用Axis 1.4开发webservice服务中的多参数传递问题,使用document/literal的SOAP绑定协议。

    首先准备好Axis的环境,及Axis 1.4所需要的jar包,放到web工程下的lib目录下。

    待发布的服务接口方法是这样的:

   然后手写wsdl文件(可以使用eclipse插件WTP设计wsdl),如:

 

    使用build.xml生成服务器端和客户端的代码,build.xml 附后:

 然后将在服务器端的代码中将deploy.wsdd拷贝到WEB-INF/下,使用build.xml部署服务,可以访问wsdl描述(因为这一步的开发比较简单,基本上有了wsdl描述之后,都是自动生成的,网上也有一些描述,这里不再叙述)。

   上面的这种方式会遇到多参数传递问题,即concat方法有两个参数,但客户端只能传递一个参数到服务器端,相信很多人遇到这个问题,下面的解决方案就是解决此问题的。

    注意,这里使用的是document/literal绑定方式,如果是document/literal(wrapped)方法,可以实现多参数传递,但如果客户要求是document/literal方式,下面的做法是非常值得一看的。

    思路是将方法中的所有参数封装为一个对象,进行传递,这里需要做的是客户端传递参数需要封装,服务器端需要解析这个对象,听起来很麻烦,做起来是很容易的。

    待发布的方法现在变成 

其中ConcatParam 封装了原来方法中的两个参数s1, s2,它是一个非常简单的javabean。

    我使用了由java到wsdl的转化,

 

    由eclipse插件WTP生成wsdl文件,如下:

 

    然后通过此wsdl生成客户端和服务器端代码,通过客户端访问服务器端,注意在客户端传递参数的时候需要封装,这样的话多参数的传递问题就解决了。

附1:工程结构图。


 

附2:build.xml

 




发表回复
账号用户名   密码   登录
内容:url email imgsrc image code quote
范例 Example
bold italic underline linethrough   


 [更多...]