SOAP协议简介[通俗易懂]

SOAP协议简介[通俗易懂]SOAP 简介SOAP是基于XML的简易协议,可使应用程序在HTTP之上进行信息交换。或者更简单地说:SOAP是用于访问网络服务的协议。您应当具备的基础知识在继续学习之前,您需要对下面的知识有基本的了解:XMLXML命名空间如果您希望首先学习这些项目,请访问我们的《XML教程》。什么是SOAP?SOAP指简易对象访问协议SOAP是一种通信协议SOAP用于应用程序之间的通信S…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

SOAP 简介


SOAP 是基于 XML 的简易协议,可使应用程序在 HTTP 之上进行信息交换。

或者更简单地说:SOAP 是用于访问网络服务的协议。


您应当具备的基础知识

在继续学习之前,您需要对下面的知识有基本的了解:

  • XML
  • XML 命名空间

如果您希望首先学习这些项目,请访问我们的《XML 教程》。


什么是 SOAP?

  • SOAP 指简易对象访问协议
  • SOAP 是一种通信协议
  • SOAP 用于应用程序之间的通信
  • SOAP 是一种用于发送消息的格式
  • SOAP 被设计用来通过因特网进行通信
  • SOAP 独立于平台
  • SOAP 独立于语言
  • SOAP 基于 XML
  • SOAP 很简单并可扩展
  • SOAP 允许您绕过防火墙
  • SOAP 将被作为 W3C 标准来发展

为什么使用 SOAP?

对于应用程序开发来说,使程序之间进行因特网通信是很重要的。

目前的应用程序通过使用远程过程调用(RPC)在诸如 DCOM 与 CORBA 等对象之间进行通信,但是 HTTP 不是为此设计的。RPC 会产生兼容性以及安全问题;防火墙和代理服务器通常会阻止此类流量。

通过 HTTP 在应用程序间通信是更好的方法,因为 HTTP 得到了所有的因特网浏览器及服务器的支持。SOAP 就是被创造出来完成这个任务的。

SOAP 提供了一种标准的方法,使得运行在不同的操作系统并使用不同的技术和编程语言的应用程序可以互相进行通信。


Microsoft 和 SOAP

SOAP 是微软 .net 架构的关键元素,用于未来的因特网应用程序开发。

SOAP 语法


SOAP 构建模块

一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:

  • 必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息
  • 可选的 Header 元素,包含头部信息
  • 必需的 Body 元素,包含所有的调用和响应信息
  • 可选的 Fault 元素,提供有关在处理此消息所发生错误的信息

所有以上的元素均被声明于针对 SOAP 封装的默认命名空间中:

http://www.w3.org/2001/12/soap-envelope

以及针对 SOAP 编码和数据类型的默认命名空间:

http://www.w3.org/2001/12/soap-encoding


语法规则

这里是一些重要的语法规则:

  • SOAP 消息必须用 XML 来编码
  • SOAP 消息必须使用 SOAP Envelope 命名空间
  • SOAP 消息必须使用 SOAP Encoding 命名空间
  • SOAP 消息不能包含 DTD 引用
  • SOAP 消息不能包含 XML 处理指令

SOAP 消息的基本结构

<?xml version=”1.0″?>

<soap:Envelope

xmlns:soap=”http://www.w3.org/2001/12/soap-envelope”

soap:encodingStyle=”http://www.w3.org/2001/12/soap-encoding”>

<soap:Header>



</soap:Header>

<soap:Body>



  <soap:Fault>

  …

  </soap:Fault>

</soap:Body>

</soap:Envelope>

SOAP 实例


一个 SOAP 实例

在下面的例子中,一个 GetStockPrice 请求被发送到了服务器。此请求有一个 StockName 参数,而在响应中则会返回一个 Price 参数。此功能的命名空间被定义在此地址中: “http://www.example.org/stock”

SOAP 请求:

POST /InStock HTTP/1.1

Host: www.example.org

Content-Type: application/soap+xml; charset=utf-8

Content-Length: nnn

<?xml version=”1.0″?>

<soap:Envelope

xmlns:soap=”http://www.w3.org/2001/12/soap-envelope”

soap:encodingStyle=”http://www.w3.org/2001/12/soap-encoding”>

<soap:Body xmlns:m=”http://www.example.org/stock”>

  <m:GetStockPrice>

    <m:StockName>IBM</m:StockName>

  </m:GetStockPrice>

</soap:Body>

</soap:Envelope>

SOAP 响应:

HTTP/1.1 200 OK

Content-Type: application/soap+xml; charset=utf-8

Content-Length: nnn

<?xml version=”1.0″?>

<soap:Envelope

xmlns:soap=”http://www.w3.org/2001/12/soap-envelope”

soap:encodingStyle=”http://www.w3.org/2001/12/soap-encoding”>

<soap:Body xmlns:m=”http://www.example.org/stock”>

  <m:GetStockPriceResponse>

    <m:Price>34.5</m:Price>

  </m:GetStockPriceResponse>

</soap:Body>

</soap:Envelope>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/164079.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • win32 SetCapture 和 ReleaseCapture的使用

    win32 SetCapture 和 ReleaseCapture的使用最近在用win32写《visualC++经典游戏程序设计》中的扫雷游戏,在写到鼠标点击雷区的时候用到了SetCapture,和ReleaseCapture这对系统函数。那么为什么需要用到鼠标捕获的函数呢?我错误地认为鼠标的跟踪可以由Point进行传值处理,就能实现我想要的功能,但是我却疏忽了如果我的鼠标按下的时候把鼠标移除窗口外面的情况,这种情况的时候鼠标是在外面的,那么当我把鼠标弹起的…

    2022年6月5日
    29
  • Java关于Math类的三个取整方法「建议收藏」

    Java关于Math类的三个取整方法

    2022年3月7日
    47
  • 程序书写规范笔记

    程序书写规范笔记

    2021年8月19日
    54
  • Bluez java_Bluez相关的各种tools的使用

    Bluez java_Bluez相关的各种tools的使用7.1BccmdBccmd是用来和CSR的芯片进行BCCMD(Bluecorecommandprotocol)通讯的一个工具。BCCMD并非蓝牙协议栈的标准,而是CSR芯片的专属协议Bccmd的调用格式为:bccmd[-t][-d][]Tansport类型包括HCIUSBBCSPH4等,常用的估计就是HCI和BCSP两种。需要注意一下他们的使用场合:HCI是…

    2025年5月22日
    0
  • 汇编资料收集_资料汇编的基本要求

    汇编资料收集_资料汇编的基本要求【常见的基本汇编书籍】《Windows.环境下32位汇编语言程序设计(第2版)》《汇编语言编程艺术》《Intel汇编语言程序设计(第四版)》《Intel汇编语言程序设计(第五版)范例》《80×86汇编语言程序设计教程》《IBM.PC.汇编语言程序设计(第五版)》 《MicrosoftMASM手册》 《Intel®64andIA-32Architectu

    2022年10月10日
    0
  • DVD基础知识

    DVD基础知识感谢‘高人’提供信息本贴的源由是‘hardjoy’碟友的一个提意,说是要弄一个基础知识简介,然后由‘杜比环绕声’版主支持列出了一些基础知识的问题,本人不才,愿就所学逐一介绍,但现在没有时间查书寻求标准答案了,只能想到哪说到哪了,不见得完全准确,大家就对付着看吧。问:有个叫什么磨码什么的是啥意思,好像是说盘基的答:你说的对,通常‘磨码’和‘盘基’是连起来说的,即‘磨码盘基’,同义词还有‘烫码盘基’和

    2022年7月11日
    14

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号