webservice快速入門-SOAP和WSDL(三)
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!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>
我們把節點收起來看得更清楚點:
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
相關文章
- CSS快速入門(三)CSS
- 前端快速入門(三)--CSS前端CSS
- XML Web 服務技術解析:WSDL 與 SOAP 原理、應用案例一覽XMLWeb
- ES6快速入門(三)
- Flutter基礎(三)Dart快速入門FlutterDart
- Flutter 基礎(三)Dart 快速入門FlutterDart
- gRPC(三)基礎:gRPC快速入門RPC
- camunda快速入門(三):設計表單和審批流程
- YOLOv5快速入門和使用YOLO
- Elasticsearch快速入門和環境搭建Elasticsearch
- 使用WebService釋出soap介面,並實現客戶端的https驗證Web客戶端HTTP
- 快速排序快速入門排序
- Gradle核心思想(三)Groovy快速入門指南Gradle
- Flutter小白教程系列(三) --- Dart語言快速入門FlutterDart
- Spring Data JPA之Spring Data JPA快速入門(三)Spring
- 三篇文章帶你快速入門Kotlin(上)Kotlin
- SQL快速入門 ( MySQL快速入門, MySQL參考, MySQL快速回顧 )MySql
- JavaScript快速入門JavaScript
- vim快速入門
- Webpack快速入門Web
- Lumen快速入門
- TypeScript 快速入門TypeScript
- phpunit 快速入門PHP
- React快速入門React
- WebSocket 快速入門Web
- Pipenv 快速入門
- MQTT 快速入門MQQT
- Zookeeper快速入門
- DvaJS快速入門JS
- SnakeYaml快速入門YAML
- RabbitMQ快速入門MQ
- 快速入門reactReact
- pipenv快速入門
- Promise快速入門Promise
- PHP快速入門PHP
- GitHub 快速入門Github
- mongodb快速入門MongoDB
- mysqlsla快速入門MySql