webservice快速入門-SOAP和WSDL(三)

hddyhg發表於2018-11-09

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

什麼是SOAP?SOAP:Simple Object Access Protocol

以下是百度的結果:

SOAP:簡單物件訪問協議,簡單物件訪問協議(SOAP)是一種輕量的、簡單的、基於 XML 的協議,它被設計成在 WEB 上交換結構化的和固化的資訊。 SOAP 可以和現存的許多因特網協議和格式結合使用,包括超文字傳輸協議( HTTP),簡單郵件傳輸協議(SMTP),多用途網際郵件擴充協議(MIME)。它還支援從訊息系統到遠端過程呼叫(RPC)等大量的應用程式

說白了,它就是一種基於XML傳輸資料的協議,為什麼基於XML,因為這樣可以確保不同平臺,語言的通訊,也就是經常聽到的導構平臺之前的通訊。

我們常見的json,xml其實都可以理解為是soap的實現

我們來看一下之前的WSDL檔案,訪問:http://localhost:7777/tudou?wsdl如下:

This XML file does not appear to have any style information associated with it. The document tree is shown below.<!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6. --><!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6. --><definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://server.ws.platform.whaty.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://server.ws.platform.whaty.com/" name="MyServiceImplService"><types><xsd:schema><xsd:import namespace="http://server.ws.platform.whaty.com/" schemaLocation="http://localhost:7777/tudou?xsd=1"/></xsd:schema></types><message name="minus"><part name="parameters" element="tns:minus"/></message><message name="minusResponse"><part name="parameters" element="tns:minusResponse"/></message><message name="add"><part name="parameters" element="tns:add"/></message><message name="addResponse"><part name="parameters" element="tns:addResponse"/></message><portType name="IMyservice"><operation name="minus"><input message="tns:minus"/><output message="tns:minusResponse"/></operation><operation name="add"><input message="tns:add"/><output message="tns:addResponse"/></operation></portType><binding name="MyServiceImplPortBinding" type="tns:IMyservice"><soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/><operation name="minus"><soap:operation soapAction=""/><input><soap:body use="literal"/></input><output><soap:body use="literal"/></output></operation><operation name="add"><soap:operation soapAction=""/><input><soap:body use="literal"/></input><output><soap:body use="literal"/></output></operation></binding><service name="MyServiceImplService"><port name="MyServiceImplPort" binding="tns:MyServiceImplPortBinding"><soap:address location="http://localhost:7777/tudou"/></port></service></definitions>

我們把節點收起來看得更清楚點:


很清楚的看到這個wsdl分為type,message,porttype,binding,service這5部分。

type:用來定義訪問的型別,一個型別對應我們服務端介面的一個方法,一個型別對應我們介面的一個返回值。我們可以看到上面的wsdl中有一個schemaLocation="http://localhost:7777/tudou?xsd=1"的玩意,我們直接在瀏覽器訪問一下它。

This XML file does not appear to have any style information associated with it. The document tree is shown below.<!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6. --><xs:schema xmlns:tns="http://server.ws.platform.whaty.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0" targetNamespace="http://server.ws.platform.whaty.com/"><xs:element name="add" type="tns:add"/><xs:element name="addResponse" type="tns:addResponse"/><xs:element name="minus" type="tns:minus"/><xs:element name="minusResponse" type="tns:minusResponse"/><xs:complexType name="add"><xs:sequence><xs:element name="arg0" type="xs:int"/><xs:element name="arg1" type="xs:int"/></xs:sequence></xs:complexType><xs:complexType name="addResponse"><xs:sequence><xs:element name="return" type="xs:int"/></xs:sequence></xs:complexType><xs:complexType name="minus"><xs:sequence><xs:element name="arg0" type="xs:int"/><xs:element name="arg1" type="xs:int"/></xs:sequence></xs:complexType><xs:complexType name="minusResponse"><xs:sequence><xs:element name="return" type="xs:int"/></xs:sequence></xs:complexType></xs:schema>
看到complexType了沒有。如果你學了schema和dtd,你就應該知道這實際就是一種型別,下面是相應的子節點,可能還有一些約束。

message:SOAP,也就是被封裝成一個物件的形式,實際上是以XML的形式展現的。裡面就是傳遞的我們的資料。

portType:就是對應我們的操作了。可以看到operation這個單詞吧。

binding:指定訊息所使用的格式。Literal就是不在SOAP訊息中表明資料型別,而通過其它方式獲知資料型別,這種方式是開發包相關的,沒有什麼標準;如<x>50</x>,單從SOAP訊息,你無法判斷50是數字還是字串。詳見:

http://blog.csdn.net/jackyrongvip/article/details/4608014

而它裡面的style="Document"中Document就是將SOAP請求和響應,或者說輸入輸出定義為XML元素,有嚴格的Schema("document" style means the messages in and out of the service are exactly as they are describe by the XML Schema in the WSDL).

service:指定服務釋出的名稱。


           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述

相關文章