上篇博客中我们已经从宏观上介绍了WebService,以及WebService三大技术支持后台。
那我们这篇博客给大家介绍以下Soap以及WSDL的模样。首先从长相外表上了解一个事物,然后通过后期实践不断深入了解。嘻嘻,其实对人的了解何尝又不是呢?学习其实是与生活本来是想通的,很多学习的道理或方法都是来自生活。好啦,我们不感慨人生了,直奔这篇博客的主题。
SOAP是WebService消息传输的格式,我们运行一个程序时,只看到运行的结果是否符合我们的要求,其实背后又是如何运行的呢?那为了捕捉真实的逼真的消息,我们必须利用身边的工具,赤手空拳是无用的。
上篇博客中,我们介绍了两种调试捕捉消息的工具,其实若是在Eclispe中开发WebService的话,直接通过Eclispe也可以看到消息传递的。
Eclispe中,打开J2EE视图:
首先,把服务运行起来:
然后点击基于webservice的浏览器:
选择wsdl页面:
ws中两个方法:
点击任何一个函数,如添加方法:
点击source,以下是发送的和接受的消息:
通过我们捕捉soap消息,我们可以看出soap消息的组成部分。
soap消息可以形象地比喻:soap消息是一个信封。信中有信头,信主体。其中写信,当然,可以没有心头了(所谓的称谓),信主题必须要有,否则写这封信就没有意义了。
所以soap消息格式如下:
那代码格式的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: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 消息必须用 XML 来编码
- SOAP 消息必须使用 SOAP Envelope 命名空间
- SOAP 消息必须使用 SOAP Encoding 命名空间
- SOAP 消息不能包含 DTD 引用
- SOAP 消息不能包含 XML 处理指令
通过观察传递的soap消息,我们可以发现,不仅仅是传递的消息,在消息上部还有http协议信息。
发送的消息如下:在发送消息中,有发送的目的地Host,传送的字节数Content-Length,传送类型Content-type,字符编码charset
POST /ns HTTP/1.1
Content-type: text/xml;charset="utf-8"
Content-type: text/xml;charset="utf-8"
Host: 127.0.0.1:8880
Connection: keep-alive
Content-Length: 240
Connection: keep-alive
Content-Length: 240
接受的消息如下:在接受消息中,有接受的状态比如成功200(HTTP/1.1 200 OK)http协议传输的编码格式Transfer-encoding,传输类型Content-type
HTTP/1.1 200 OK
Transfer-encoding: chunked
Content-type: text/xml;charset="utf-8"
了解了Soap的格式规范,我们在编码时,会方便很多。用C++访问Java发布的webService时,就是使用的编写的Soap客户端,并且在Java服务器端,也是使用Soap形式发布服务的。
在后期博客中,我们会使用编写Soap形式在进行发布或访问服务,所以现在我们花点时间来了解一下Soap,嘻嘻,现在苦点,以后就会甜点。
相关推荐
它提供了直观的界面,使得开发者能够轻松地创建、发送、接收和分析SOAP请求。SoapUI-x64-5.6.1.exe是该软件的64位版本安装程序,适用于Windows操作系统。 首先,让我们了解SOAPUI的核心功能: 1. **请求创建**:...
SOAP(Simple Object Access Protocol),简单对象访问协议,是用于在Web上交换结构化和类型化信息的一种协议,它是构建Web服务的核心技术之一。 在标题和描述中提到的"webservice,soap调用",这是指使用SOAP协议...
了解这些基本概念后,开发者就能根据具体的业务需求,利用SOAP协议和XML解析技术来实现Web服务的调用。在实际开发中,还需要考虑安全性、性能优化、异常处理等方面的问题。学习并熟练掌握这些技能对于构建分布式系统...
本文将深入探讨如何在.NET应用中访问Java的WebService,并通过SOAP头进行身份验证的过程,这一过程对于实现安全的跨平台通信至关重要。 ### 1. SOAP头在Web服务中的作用 SOAP(Simple Object Access Protocol)是...
本教程将详细讲解客户端如何通过SOAP(Simple Object Access Protocol)请求调用WebService,以实现根据订单号获取订单的物流信息。 **SOAP请求详解** SOAP是一种XML(eXtensible Markup Language)格式的消息协议...
### Java使用SOAP获取WebService实例解析 #### WebService简介 WebService是一种跨编程语言和操作系统平台的、在网络上进行数据交换的一种方式。它使用标准的Internet协议,如HTTP、XML、SOAP等来实现不同系统间的...
WebService Soap 是一种基于 SOAP 协议的 Web 服务技术,允许不同语言和平台之间的通信和数据交换。它提供了一种松散耦合的接口,使得不同的系统和应用程序能够相互通信和交互。 Winform 应用程序 在本文中,我们...
本文主要介绍如何使用SOAP(Simple Object Access Protocol)方式来调用Webservice接口,以金蝶为例进行详细讲解。 首先,了解SOAP。SOAP是一种基于XML的协议,用于在Web上交换结构化的和类型化的信息。它通过HTTP...
### VB.NET与Java通过SOAP协议访问WebService的知识点 #### 一、基础知识介绍 - **SOAP (Simple Object Access Protocol)**: 是一种轻量级协议,用于交换结构化的信息。它定义了用于构造消息以及进行信息传输的...
Java与SOAP(Simple Object Access Protocol)以及Web服务的结合是一种常见的技术栈,用于构建分布式系统。本教程将深入探讨如何使用Java进行SOAP Web服务的调用,并帮助你掌握这一技能。 首先,理解SOAP是什么至关...
开发webservice必须的soap包
学习和掌握这一技术,不仅可以增强跨平台通信能力,还能提高开发效率,尤其在与.Net系统集成时。 总的来说,Java通过HTTPClient调用.Net Webservice并实现SOAP通信,是一个涉及XML处理、HTTP协议和网络编程的综合性...
标题中的“PB9-soap-WEBSERVICE例子.rar”表明这是一个关于PowerBuilder 9(简称PB9)使用SOAP(简单对象访问协议)调用Web服务的示例压缩包。这个例子可能包含完整的代码、配置文件以及相关的说明文档,用于演示...
09.WebService核心技术之SOAP协议深入详解.
总之,理解和掌握WebService与SOAP的概念,以及如何使用SOAP抓取工具,对于任何涉及分布式系统开发的IT专业人员来说都是必不可少的技能。这不仅可以提高开发效率,还能确保服务的质量和可靠性。
最近写了一个SOA服务,开始觉得别人拿到我的服务地址,然后直接添加引用就可以使用了,结果"大牛"告知不行。...让我写一个SOAP调用服务的样例,我有点愣了,因为没做过这方面的,于是搞到了一个Demo,然后学习了下。
你可以创建一个新的ASP.NET Web服务项目,然后定义你的服务接口(通常是使用`[WebService]`和`[WebMethod]`属性标记的公共方法)。VS2015会自动为这些接口生成WSDL文件,这使得其他客户端(包括C++应用)可以理解和...
"webservice之soap.jar" 是一个Java库,主要用于支持开发和运行基于SOAP的Web服务。此jar包包含了处理SOAP消息和与SOAP服务器交互所需的所有类和方法。在Java环境中,开发Web服务时,这个库是非常重要的工具。 1. *...
在客户端支持上,无论是SOAP还是RESTful服务,现代的客户端技术如AJAX、Flex、JavaFX、AIR等都能提供支持,它们可以通过XMLHttpRequest或HTTPService等组件与服务进行通信。不过,直接调用Servlet通常是J2EE服务器端...
分高但绝对值-简介: 1、利用SoapExtension,...3、在写WebService时只需加认证标签,客户端调用时传入SoapHeader,即可完成认证。 4、当然你还可以发挥,比如压缩消息,日志记录,Trace之类,网上也有很多文章讲。