概述


介绍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. 【C++ STL】Map和Multimap

    1.结构 Map和multimap将key/value pair(键值/实值 队组)当作元素,进行管理.他们根据key的排序准则将元素排序.multimap允许重复元素,map不允许. 元素要求: k ...

  2. Linux系统基本网络配置之ifconfig命令

    Linux系统基本网络配置之ifconfig命令 一.Linux系统的网络配置基本包括:网络IP的配置.网关路由的配置.主机DNS的配置.主机名的配置等,本篇注重介绍网络IP的配置. 二.Linux系 ...

  3. 【NOIP】提高组2015 子串

    [题意]求从字符串A中取出k个互不重叠的非空子串顺序拼接形成B的方案数.n<=1000,m<=100,k<=m. [算法]动态规划 [题解]这题主要是将从i-l转移变成从i-1转移, ...

  4. ...args剩余参数用法

      剩余参数语法允许我们将一个不定数量的参数表示为一个数组. function sum(...theArgs) { return theArgs.reduce((previous, current) ...

  5. HTML5获取地理位置信息并在Google Maps上显示

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  6. python基础===monkeytype可以自动添加注释的模块!

    monkeytype 一个可以自动添加注释的模块! 先要下载: pip install monkeytype 以官网的sample code为例 #moudle.py def add(a, b): r ...

  7. core dump使用方法、设置、测试用例

    core dump使用方法.设置.测试用例 http://blog.csdn.net/liuzhuchen/article/details/21975227

  8. 基数排序c++实现

    基数排序:是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较.由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数.但在 ...

  9. APP运营

    产品相关术语 APP:application的简写,即应用. 开发商:也叫CP,即ContentProvider内容提供商. 发行商(运营商):代理CP开发出来的产品. 联运:CP和渠道联合运营产品. ...

  10. python的多线程、多进程代码示例

    python多进程和多线程的区别:python的多线程不是真正意义上的多线程,由于python编译器的问题,导致python的多线程存在一个PIL锁,使得python的多线程的CPU利用率比预期的要低 ...