Thinking in Java (the 2nd edition) Study Note
自1994年开始,Internet得到了迅猛的发展,自然而然,为了适应网络的基础应用产生了很多的应用级别的协议,HTTP协议就是现阶段普遍使用的用于Web浏览器和Web服务器之间通信的应用级别主要协议之一。但是其最大的不足之处在于只具备相当简单的请求和发送等传输命令,比如:Get、Post、Put,作用也仅仅主要体现在了对数据的浏览功能等,为了满足应用程序之间的数据共享和数据的交换,Soap简单对象访问协议在1998年诞生了。
Soap简单对象访问协议首要目的是要解决不同平台和不同系统之间的应用程序之间的通信,XML语言编程了Soap首选的大纲语言。
Soap的结构,也可以理解为Soap消息主要包含三个主要的元素:
Soap <Envelope>,Soap <Header>,Soap <Body>
Soap <Envelope> 即所谓的消息根元素,也是消息的标题元素,并且这个元素在Soap消息中是必须存在的元素之一,主要的作用就是告诉接受方此消息的基本情况等。
Soap <Header> 对于 Header 元素来说在一个Soap消息中是不必要存在的,假如存在Header 元素的话,它必须是Envelope的第一个子元素,主要的作用就是传递一些辅助性的附加消息,比如身份验证,会话等。
Soap <Body> Body 元素即所谓的Soap消息体了,此元素是每个Soap消息中必须有的元素之一,而一个body元素可以由多个子元素构成。
在这里还要说一下body元素中的一个非凡元素<Faule>元素,此元素可以设置当发送消息产生错误时使用这个元素来报告消息的错误信息。
下面的例子摘自Internet-draft规范说明中:
POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml
Content-Length: nnnn
SOAPMethodName: Some-Namespace-URI#GetLastTradePrice
<SOAP:Envelope xmlns:SOAP="urn:schemas-xmlsoap-org:soap.v1">
<SOAP:Body>
<m:GetLastTradePrice
xmlns:m="Some-Namespace-URI">
<symbol>DIS</symbol>
</m:GetLastTradePrice>
</SOAP:Body>
</SOAP:Envelope>
由于Soap协议是建立在Http协议之上的,所以对于应用于http协议之上的对象,完全不必考虑其消息的传递性,诸如防火墙、代理服务器之类。假如你对Soap协议比较感爱好你可以查找相关资料来了解其优越性。