Web-Service-SOAP1.1 vs SOAP1.2

SOAP提升:

1.目前WebService的协议主要有SOAP1.1和1.2。
2.两者的命名空间不同。
1.见下页对比。
3.SOAP1.1版本与SOAP1.2版本在头信息上存在差异。
1.SOAP1.1存在SOAPAction的请求头。
2.SOAP1.2没有SOAPAction的请求头。
4.基于SOAP1.1生成的WSDL和基于SOAP1.2生成的WSDL也不一样。
1.主要看命名空间。
5.在CXF中两种协议请求的方式也不一样。
1.1.1为content-Type:text/xm;charset=UTF-8
2.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?wsdlHTTP/1.1
Content-Type:text/xml; charset=UTF-8
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?wsdlHTTP/1.1
Content-Type:application/soap+xml;charset=UTF-8
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文件的差别:

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


通过BindingType将项目转到1.2:

l在类上面添加以下注解可以使用soap1.2的协议:
@BindingType(value=SOAPBinding.SOAP12HTTP_BINDING)
l或在applicationContext.xml中使用binding
<jaxws:binding>
  <soap:soapBindingversion="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(newURL(“wsdlUrl”),

                                                          new QName(“namespace”,”ServiceName”));

      SomeClass sc = service.getPort(new QName(“namespace”,”PortName”),

                                                         SomeClass.class);

      sc.someMethod(someParam);


通过Ajax形式访问:

1、指定contentType:’application/soap+xml;charset=“UTF-8”‘

2、组织使用XML数据,使用SOAP12的命名空间.

		var str = '<soap12:Envelope xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">'+
			  '<soap12:Body><ns2:sayHi xmlns:ns2="http://service.itcast.com/">'+
			  '<arg0>'+nm+'</arg0></ns2:sayHi></soap12:Body></soap12:Envelope>';
			$.ajax({
				url:'<c:url value="/ws/greeting"/>',
				contentType:'application/soap+xml;charset="UTF-8"',
				dataType:'xml',
				type:'post',
				data:str,
				success:function(data){
					var vv = $(data).find("return").eq(0).text();
					$("<div>").text(vv).css({border:'1px solid red',width:'500px',marginTop:'5px'})
								.appendTo($("body"));
				}
			},"xml");



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值