SOAP提升:

目前WebService的协议主要有SOAP1.1和1.2。
两者的命名空间不同。

见下页对比

SOAP1.1版本与SOAP1.2版本在头信息上存在差异。
SOAP1.1存在SOAPAction的请求头。
SOAP1.2没有SOAPAction的请求头。
基于SOAP1.1生成的WSDL和基于SOAP1.2生成的WSDL也不一样。

主要看命名空间

在CXF中两种协议请求的方式也不一样。
1.1为content-Type:text/xm;charset=UTF-8
1.2为content-Type:application/soap+xml;charset=UTF-8

命名空间:

Soap1.1的命名空间:

xmlns:soap=“http://schemas.xmlsoap.org/soap/envelope/ “

Soap1.2 命名空间:

xmlns:soap="http://www.w3.org/2003/05/soap-envelope“

SOAP1.1的HTTP请求头:

POST /xe_cxf2.4_soap12_spring_web/ws/helloworldsoap12?wsdl HTTP/1.1
Content-Type: text/xml; charset=UTF-
Accept: */*
SOAPAction: ""
User-Agent: Apache CXF 2.4.0
Cache-Control: no-cache
Pragma: no-cache
Host: localhost:6767
Connection: keep-alive
Content-Length: 216

注意上面包含SOAPAction且请求方式为text/xml。

SOAP1.2的请求头:

POST /xe_cxf2.4_soap12_spring_web/ws/helloworldsoap12?wsdl HTTP/1.1
Content-Type: application/soap+xml; charset=UTF-
Accept: */*
User-Agent: Apache CXF 2.4.0
Cache-Control: no-cache
Pragma: no-cache
Host: localhost:6767
Connection: keep-alive
Content-Length: 214

注意上面没有SOAPAction且类型为soap+xml.

SOAP1.1和1.2的WSDL文件的差别:

在定义Service部分差别如下:
Soap1.1是以:soap:address定义。
Soap1.2是以: soap12:address定义。-jdk1.6不支持12形式的访问。

通过BindingType将项目转到1.2:

在类上面添加以下注解可以使用soap1.2的协议:

@BindingType(value=SOAPBinding.SOAP12HTTP_BINDING)
或在applicationContext.xml中使用binding
<jaxws:binding>
<soap:soapBinding version="1.2" />
</jaxws:binding>

SOAP1.2的调用:

当使用了SOAP12以后,wsimport和Eclipse的WSExplorer都不可以正常使用了。
必须,使用cxf提供的wsdl2java工具生成本地代码。
生成本地代码后,通过cxf内置的拦截器,拦截到以下头信息说明是soap12.

SOAP11与SOAP12的调用关系:

CXF中两种协议请求的方式也不一样

Soap1.1以普通方式访问:

使用JaxWsProxyFactoryBean

Soap1.2以指定wsdl地址和命名空间的形式访问:

Service service = Service.create(new URL(“wsdlUrl”),
new QName(“namespace”,”ServiceName”));
SomeClass sc = service.getPort(new QName(“namespace”,”PortName”),
SomeClass.class);
sc.someMethod(someParam);

通过Ajax形式访问:

、指定contentType:’application/soap+xml;charset=“UTF-”‘
、组织使用XML数据,使用SOAP12的命名空间.
(由于代码太多,请见下面的备注)

SOAP1.1 VS SOAP1.2的更多相关文章

  1. axis2设置soap1.1或soap1.2协议

    现在Axis.Axis2都是同时支持SOAP1.1和SOAP1.2的.即在服务器端发布一个WebService服务之后,客户端既可以通过SOAP1.1版本来访问服务器的服务,也可以通过SOAP1.2版 ...

  2. soap1.1与soap1.2

    1.soap1.2 如果加上jar包后,项目启动报错,有可能是jar包没起作用, 解决方法:把jar包移除,重新加入jar包 TCP/IP Monitor监测到的内容: soap1.2请求与soap1 ...

  3. 用java实现简单快速的webservice客户端/数据采集器(支持soap1.1和soap1.2标准,支持utf-8编码)

    前言: 用了cxf,axis等各种wbeservice实现库,简单试用了一下动态调用的方式,很不满意,完全无法满足业务的需要,所以自己实现了一个webservice采集客户端,方便动态调用外部webs ...

  4. SOAP1.1 and SOAP1.2

    在用cxf 做webservice客户端的时候碰到的: javax.xml.ws.soap.SOAPFaultException: A SOAP 1.2 message is not valid wh ...

  5. soap1.1与soap1.2区别

  6. WebService:设置服务器提供SOAP1.2的服务

    1,访问通过cxf发布的服务 (1)与之前一样,同样可以通过在本地通过wsdl文件和命令行生成Java文件来访问服务. 但是我们既然使用了cxf发布,就要通过cxf的工具生成访问.可以通过cxf目录的 ...

  7. CXF支持 SOAP1.1 SOAP1.2协议

    SOAP协议分为两个版本 1.1 1.2 默认支持1.1   实现方式:   1.编写接口   import javax.jws.WebService; @WebService public inte ...

  8. webservice初识,SOAP1.1版本

    客户端与服务端模式,非web端发布 1.1      [Jax-ws第一个例子] 1.1.1     第一步:服务端开发 编写SEI(Service Endpoint Interface),SEI在w ...

  9. cxf ServerFactoryBean 生成基于soap1.2的WebServices

    //获得服务工厂bean ServerFactoryBean bean = new ServerFactoryBean(); HTTPTransportFactory httpTransportFac ...

随机推荐

  1. input的number类型只能输入正数,禁止负数输入

    <input type="number" max="10" min='1' id='number'> <script> document ...

  2. Catalyst9K设备介绍

    Catalyst9K系列的里面包含了多款交换机,以及无线控制器,甚至包含了无线AP,如下将简单的介绍这几款产品的情况: 首先,这是一种总体的对应关系: 1.Catalyst9200 Series 主要 ...

  3. CSS学习(9)块盒模型应用

    1.改变宽高范围 默认情况下,width和height设置的是内容盒的宽高 页面重构师:将psd文件(设计稿)制作为静态页面 衡量设计稿尺寸的时候,往往使用的是边框盒 CSS3中 box-sizing ...

  4. Yii2 TimestampBehavior 用来自动给指定的属性填充当前时间戳

    要使用 TimestampBehavior,把下面的代码加到你的 ActiveRecord 类中: use yii\behaviors\TimestampBehavior; public functi ...

  5. 任意模数 n 次剩余

    \(n\) 次剩余 你需要解方程 \(x^n\equiv k\pmod m\),其中 \(x\in [0,m-1]\). 保证解数不超过 \(C=10^6\) \(1\le n,m,k\le 10^9 ...

  6. 如何使用git和github

    转载:https://www.cnblogs.com/cxscode/p/8325064.html 如何用git将项目代码上传到github 先上常用语句 git add . git commit - ...

  7. window下进程退出后自动重启

    设计思想:编写批处理脚本监控进程的运行状态,如果发现进程停止,则自动重启该进程.批处理脚本(jk.bat)和进程脚本(hello.bat)如下: 1.jk.bat @echo off rem 定义需监 ...

  8. 2、json教程

    JSON(JavaScript)对象表示法是一种轻量级的基于文本的开放标准, 被设计用于可读的数据交换, 约定使用JSON的程序包括 C C++ Java Python Perl     总结 JSO ...

  9. PTA的Python练习题(十八)

    第4章-20 求矩阵各行元素之和 遇到一个麻烦的事情: 上面a,b输入,如果一起输入转int会报错,因为int只能一对一 但是明明我分开来int了,下面第十行还是报错说我的b是string字符,难不成 ...

  10. python 切片技巧

    说明: 字符串[开始索引:结束索引:步长] 开始索引:从指定位置开始截取: 结束索引:从指定位置结束截取,但不包含该位置的字符. 步长:不指定时步长为1: 1)当步长为正数时候,那么切片是从左到右进行 ...