zoukankan      html  css  js  c++  java
  • SOAP消息的结构

    概述


    介绍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应该是侧重于协议的描述;也因此,我把前三个部分称为结构相关,把后两个部分称为协议相关,而后者目前还不打算讲。





  • 相关阅读:
    python学习笔记(二)-字符串方法
    python学习笔记(一)-基础知识
    Charles抓包工具断点修改返回内容
    Charles抓包工具过滤网络请求
    Jmeter通过正则表达式提取器提取响应结果数据
    【PHP】什么时候使用Try Catch(转)
    【tp5.1】七牛云上传图片
    【PHP】统计问卷调查结果的选项票数和百分比
    【tp5.1】composer安装PHPExcel以及导入导出Excel
    【tp5.1】微信公众号授权登录及获取信息录入数据库
  • 原文地址:https://www.cnblogs.com/ywjy/p/5195971.html
Copyright © 2011-2022 走看看