概述


介绍SOAP报文的结构,以及获取的方式。

正文


1.其实发送的是SOAP消息

在前面讲述过使用Eclipse的工具Web Services Explorer发送请求。在Actions中填写请求参数,然后点击Go发送请求。其实发送出去的是对应的SOAP消息:

点击Source链接,可以看到一个预设的SOAP消息框架:

注:为了突出重点,做了适当的调整;大家在实际操作时看到应该不同。
在文本框之外的,是SOAP框架的元素;在文本框之内的,是我们自定义的元素。我们可以直接编辑自定义的部分,但是要符合wsdl文档中对于元素的定义。
假如我们这样编辑:

我们可以直接点击Go发送请求,或者点击Form,回到一般的参数编辑页面(会有一个确认框,直接确认即可):

2. 如何获取SOAP消息的结构

服务端的思考中发布的服务为例,wsdl的地址是http://localhost:6666/service/interpret?wsdl,使用浏览器访问,可以看到:

先把关注点放在红框中,那里引入了一个Schema,这个Schema定义了SOAP消息中的,自定义部分的结构。使用浏览器打开那个地址,可以看到:

假设你已经对Schema的知识有了一定的了解,如果不是,可以参考:w3school XML Schema 参考手册
 
Schema两个
<tns:interpret xmlns:tns="http://service.chapter1.jws.sand.ljl.cn/">
<num/>
</tns:interpret>

<tns:interpretResponse xmlns:tns="http://service.chapter1.jws.sand.ljl.cn/">
<chnum/>
</tns:interpretResponse>
一个是请求消息的Body结构,一个是响应消息的Body结构。那么如何对号入座呢?不可避免的还是要讲一些wsdl的内容,以下内容仅是自己的理解,不敢保证在严格的领域被认可。
wsdl包含五个部分,前三个部分依次是types、message、portType,其各作用如下:
  1. types
    定义SOAP消息的结构,例如上文中是通过引入了外部的Schema来定义
  2. message
    对types中的结构进行了封装,每一个结构作为message的一个part
  3. portType
    定义服务操作(operation),以及每一个操作的输入、输出及对应的message。
 
通过这三个部分,我们就可以完全确定SOAP报文的结构了,对号入座的关键在于解读portType。
那么我们现在看一下上文的wsdl的这三个部分:

请尝试自己解读。
既然wsdl的前三个部分已经可以确定报文的结构,那么后面的两个部分binding、service应该是侧重于协议的描述;也因此,我把前三个部分称为结构相关,把后两个部分称为协议相关,而后者目前还不打算讲。

SOAP消息的结构的更多相关文章

  1. SOAP消息结构

    邵盛松 2012-5-22 一 SOAP消息结构 SOAP消息包括以下元素 必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息,XML文件的顶层元素,代表该文件为SOAP消 ...

  2. soap消息机制 讲解

    SOAP(Simple Object Access Protocol,简单对象访问协议)作为一种信息交互协议在分布式应用中非常广泛,如WebService.在使用.Net开发WebService时候, ...

  3. 写入soap消息以及与soap消息通信

    1.些了解一下soap消息的结构以及通信方式如下图:

  4. Web Service学习之八:Soap消息详解

    一.区别概念 WSDL是网络服务描述语言,是XML文档:它包含一系列描述某个web service的定义或者说是规则.尤其是定义了传输Sope消息的结构 Soap:简单对象访问协议,是交换数据的一种协 ...

  5. 2.技巧: 用 JAXM 发送和接收 SOAP 消息—Java API 使许多手工生成和发送消息方面必需的步骤自动化

    转自:https://www.cnblogs.com/chenying99/archive/2013/05/23/3094128.html 技巧: 用 JAXM 发送和接收 SOAP 消息—Java ...

  6. (七)发送、接收SOAP消息(以HttpClient方式)(2)

    一.为什么要用soap 原本我们使用web服务都是根据wsdl生成客户端(生成一堆java文件)然后再调用,本章节讲解如何用soap消息来替代这种方式. 二.SOAP消息格式 SOAP(简单对象访问协 ...

  7. (六)发送、接收SOAP消息(1)

    一.为什么要用soap 原本我们使用web服务都是根据wsdl生成客户端(生成一堆java文件)然后再调用,本章节讲解如何用soap消息来替代这种方式. 二.SOAP消息格式 SOAP(简单对象访问协 ...

  8. 如何用Apache TCPMon来截获SOAP消息

    在WebService服务器和客户机之间会传递SOAP消息,有时我们需要得到这些消息以便调试,而Apache的TCPMon可以帮助我们做到这一点.  TCPMon的下载地址在http://ws.apa ...

  9. SOAP消息的传递

    上一篇说了SOAP消息的创建,那么创建好了的SOAP消息要怎么发送给服务端呢? public class SoapTest { private String wsdlUri = "http: ...

随机推荐

  1. 数学:Burnside引理与Pólya定理

    这个计数定理在考虑对称的计数中非常有用 先给出这个定理的描述,虽然看不太懂: 在一个置换群G={a1,a2,a3……ak}中,把每个置换都写成不相交循环的乘积. 设C1(ak)是在置换ak的作用下不动 ...

  2. LightOJ 1137 - Expanding Rods 基础计算几何

    http://www.lightoj.com/volume_showproblem.php?problem=1137 题意:一根长度为L的杆热膨胀为L',左端点到右端点间距离不变,且膨胀后的杆的弧为圆 ...

  3. [洛谷P3629] [APIO2010]巡逻

    洛谷题目链接:[APIO2010]巡逻 题目描述 在一个地区中有 n 个村庄,编号为 1, 2, ..., n.有 n – 1 条道路连接着这些村 庄,每条道路刚好连接两个村庄,从任何一个村庄,都可以 ...

  4. MyBatis框架的使用及源码分析(十三) ResultSetHandler

    在PreparedStatementHandler中的query()方法中,用ResultSetHandler来完成结果集的映射. public <E> List<E> que ...

  5. MyBatis框架的使用及源码分析(四) 解析Mapper接口映射xml文件

    在<MyBatis框架中Mapper映射配置的使用及原理解析(二) 配置篇 SqlSessionFactoryBuilder,XMLConfigBuilder> 一文中,我们知道mybat ...

  6. python学习笔记(七)之列表

    列表:是一个加强版的数组,什么东西都可以往里面放. 创建列表 创建一个普通列表: >>> member = ['operating system', 'data structure' ...

  7. VS推荐插件

    以下插件均可在NuGet下载 Smooth Scroll 平滑滚动 Format document on Save 保存时自动格式化代码 Supercharger VS增强插件[破解教程] HideM ...

  8. Python学习笔记 - day13 - 进程与线程

    概述 我们都知道windows是支持多任务的操作系统. 什么叫“多任务”呢?简单地说,就是操作系统可以同时运行多个任务.打个比方,你一边在用浏览器上网,一边在听MP3,一边在用Word赶作业,这就是多 ...

  9. 金融分析二:Matplotlib模板

    Matplotlib:绘图和可视化 Matplotlib是一个强大的Python绘图和数据可视化的工具包. 安装方法:pip install matplotlib 引用方法:import matplo ...

  10. JAVA 线程状态及转化

    线程状态图 说明:线程共包括以下5种状态.1. 新建状态(New)         : 线程对象被创建后,就进入了新建状态.例如,Thread thread = new Thread().2. 就绪状 ...