加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WebService:SOAP及协议的监控

发布时间:2020-12-16 22:27:48 所属栏目:安全 来源:网络整理
导读:l? WebService只采用HTTP POST方式传输数据,不使用GET方式(要发送SOAP请求体);? -- 握手,WSDL-get, ???? 普通http post的contentType为 ???? application/x-www-form-urlencoded ???? WebService的contentType为-即在Http的基础上发SOAP协议 ???? text/

l? WebService只采用HTTP POST方式传输数据,不使用GET方式(要发送SOAP请求体);? -- 握手,WSDL-get,

???? 普通http post的contentType为

????application/x-www-form-urlencoded

???? WebService的contentType为-即在Http的基础上发SOAP协议

????text/xml 这是基于soap1.1协议。

????application/soap+xml这是基于soap1.2协议。

l? WebService从数据传输格式上作了限定。WebService所使用的数据均是基于XML格式的。目前标准的WebService在数据格式上主要采用SOAP协议。SOAP协议实际上就是一种基于XML编码规范的文本协议。



l? SOAP – Simple Object Access protocol 简单对像访问协议。是运行在HTTP协议基础之上的协议。其实就是在HTTP协议是传输XML文件,就变成了SOAP协议。

l? SOAP1.1和SOAP1.2的namespace不一样。可以通过查看类

???? javax.xml.ws.soap.SOAPBinding来查看里面的常量

???? 默认情况下,Jdk1.6只支持soap1.1

???? 即:@BindingType(value=javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING)

?

?

?

l? WebService和Web服务器有什么区别呢?我们可以把WebService看作是Web服务器上应用;反过来说,Web服务器是WebService运行时所必需的容器。这就是它们的区别和联系。

l? 使用JDK1.6发布的简单Web服务,其内部其实是使用Socket实现。可以查看:SUN公司未对外公布的API类com.sun.xml.internal.ws.transport.http.server.ServerMgr获知,请使用反编译工具。

l? WebService的特点

???? WebService通过HTTP POST方式接受客户的请求

???? WebService与客户端之间一般使用SOAP协议传输XML数据.

???? 它本身就是为了跨平台或跨语言而设计的。


?

SOAP1.1和1.2之区别

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

Soap1.1的命名空间:

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

Soap1.2 命名空间:

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

?

  1. SOAP1.1版本与SOAP1.2版本在头信息上存在差异。
    1. SOAP1.1存在SOAPAction的请求头。
    2. SOAP1.2没有SOAPAction的请求头。

1.1

POST/xe_cxf2.4_soap12_spring_web/ws/helloworldsoap12?wsdl HTTP/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

?????????????????? 1.2

POST/xe_cxf2.4_soap12_spring_web/ws/helloworldsoap12?wsdl HTTP/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

  1. 基于SOAP1.1生成的WSDL和基于SOAP1.2生成的WSDL也不一样。
    1. 主要看命名空间。
    2. 在定义Service部分差别如下:

Soap1.1是以:soap:address定义。

Soap1.2是以:? soap12:address定义。-jdk1.6不支持12形式的访问。

?

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

1.2为content-Type:application/soap+xml;charset=UTF-8

?

?

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

???? @BindingType(value=SOAPBinding.SOAP12HTTP_BINDING)

l? 或在applicationContext.xml中使用binding

???? <jaxws:binding>

???? ?????????????? <soap:soapBindingversion="1.2" />

???? ???? </jaxws:binding>

l? 当使用了SOAP12以后,wsimport和Eclipse的WSExplorer都不可以正常使用了。

l? 必须,使用cxf提供的wsdl2java工具生成本地代码。

l? 生成本地代码后,通过cxf内置的拦截器,拦截到以下头信息说明是soap12.


这就说明客户端最好使用1.1,服务端最好使用1.2

?

CXF对两种不同的协议调用方式

Soap1.1以普通方式访问:

???????? 使用JaxWsProxyFactoryBean

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

???????? Serviceservice = Service.create(new URL(“wsdlUrl”),

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

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

?????????????????????????????????????????????????????????SomeClass.class);

?????sc.someMethod(someParam);


监控协议的几种方式

对于测试SOAP协议

???????? MyEclipseWebservice Explorer

对于ajax请求方式:

HttpWatchProfessional【针对IE】

FireFox fireBug【针对FireFox】

对于java程序

???????? TCP/IPMonitor【客户端程序修改端口号,这个程序转发请求,拦截网络消息】,他可以独立运行,也可以以Eclipse的插件运行。


?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读