use属性可以为literal,encoded;
style可以为rpc,document.
我们来对五种类型的style/use决定的 binding作一比较,
分别是rpc/literal,
document/literal none-wrapper,
document/literal with wrapper,
rpc/encoded,
document/encoded。
从生成soap消息的角度看
rpc和document的差别在于方法的操作名是否出现在生成的Soap消息中。
literal和encoded编码方式的差别在于参数类型是否出现在生成的Soap消息中。
rpc/encoded能够完整地表示一个方法调用,但性能很差,而且不能校验Soap消息的有效性。
rpc/literal不对参数类型进行编码,但仍然无法对Soap消息进行校验。
document/encoded没有意义,因为没有方法名,对参数类型编码没有什么意义。
document/literal none-wrapper无法生成操作名,适用于完整的文档作为参数传递给方法的场景。
document/literal with wrapper应该是目前使用最多的方式。
先看一段Soap消息:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:jax="http://jaxws.webserver.siyaa.cn/"> <soapenv:Header/> <soapenv:Body> <jax:Call> <operation>?</operation> </jax:Call> </soapenv:Body> </soapenv:Envelope>
如果我们只做一个客户端去封装这样一个saop消息,那么对于以上五中组合有什么区别呢?
抱着这个疑问本人一一测试,最终发现
document/literal none-wrapper
组合的soap消息跟其它的不一样,其对应消息应该是
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:jax="http://jaxws.webserver.siyaa.cn/"> <soapenv:Header/> <soapenv:Body> <jax:Call> <jax:operation>?</jax:operation> </jax:Call> </soapenv:Body> </soapenv:Envelope>
细心的人应该可以发现 请求参数operation前面多了一个前缀,若没有此前缀则会找不到参数.
wsdl中的style 和use 可以很容易的获得,但是 wrraped 和 bare的是如何区分的呢?
这个区分不是很明显,不仔细看是发现不了的:
wrraped的输入元素的名称与操作名称相同,bare的不同. 另外bare的请求参数只能有一个.
就这么简单...
OK,现在可以根据wsdl文件轻松组装自己的soap消息了吧,在此记录可以在以后忘记了快速找到解决方法.也希望给跟我有同样困惑的人一些提示.
相关推荐
webservice,soap调用, webservice,soap,积分接口调用,qq webservice调用
利用WebService Soap 建立列车时刻、手机归属、QQ在线、航空时刻等查询工具。
JS WebService Soap 通讯,查询QQ号码在线状态,手机号码归属地
webservice soap抓取工具,抓取WebService Soap请求
基于REST的软件体系结构风格(Software Architecture Style)称之...按照REST原则设计的软件、体系结构,通常被称为“REST式的”(RESTful),在本文中以下称之为 RESTful Web服务,以便于和基于SOAP的Web服务区别。
webService Soap 应用实例
vc++连接webservice soap协议
java项目简单模拟soap型的webservice远程调用服务,内附使用说明文档方便学习和查阅,让你轻松学会soap-webservice的使用方法!
Soap WebService 调试工具
webservice Soap和XFire2种方式代码列子
分高但绝对值-简介: 1、利用SoapExtension,SoapExtensionAttribute,实现Soap自定义Attribute(标签)扩展类。...4、当然你还可以发挥,比如压缩消息,日志记录,Trace之类,网上也有很多文章讲。
SOAP使用的简单例子,和WEBSERVICE使用SOAP协议传输
php编写的webservice服务端及客户端示例,并加了说明文件,下载后可直接运行。
基于eclipse和axis2的soap webservice
NULL 博文链接:https://wangcheng.iteye.com/blog/383766
SOAP和WebService实例,供大家一起参考学习。
webservice soap wsdl详解
Java使用SOAP获取webservice实例解析 具体实例分析说明。
JAVA 调用SAP SOAP webservice需要注意的一些坑,请务必按步骤一步步来。