Skip to content

Web Services

  • REST utilise le protocole HTTP, les paramètres de la requète sont passés en GET ou en POST. Il représente un vieu standard mais encore l’un des plus utilisés de nos jours
  • XML-RPC utilise le protocole HTTP pour le transport et la norme XML pour le codage. XML-RPC n’a pas été conservé par le W3C comme standard.
  • SOAP est un RPC qui a été poussé par IBM et Microsoft. SOAP est soutenu par le W3C. Actuellement la version 2.0 est recommandé par le W3C mais elle n’est pas compatible PHP. Nous utiliserons donc la version 1.1.

SOAP est aujourd’hui le standard recommendé par le w3c. PHP dispose donc d’une librairie pour l’utiliser. Il faudra activer l’extension php_soap

SOAP

PHP implémente deux classes permettant d’utiliser SOAP. Une classe cliente et une classe serveur.

SOAP utilise WSDL pour fonctionner. Il est donc nécéssaire d’en connaitre la structure pour utiliser SOAP

WSDL

<?xml version="1.0"?>
<definitions name="StockQuote"

targetNamespace="http://example.com/stockquote.wsdl"
          xmlns:tns="http://example.com/stockquote.wsdl"
          xmlns:xsd1="http://example.com/stockquote.xsd"
          xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
          xmlns="http://schemas.xmlsoap.org/wsdl/">

    <types>
       <schema targetNamespace="http://example.com/stockquote.xsd"
              xmlns="http://www.w3.org/2000/10/XMLSchema">
           <element name="TradePriceRequest">
              <complexType>

                  <all>
                      <element name="tickerSymbol" type="string"/>
                  </all>
              </complexType>
           </element>
           <element name="TradePrice">

              <complexType>
                  <all>
                      <element name="price" type="float"/>
                  </all>
              </complexType>
           </element>

       </schema>
    </types>

    <message name="GetLastTradePriceInput">
        <part name="body" element="xsd1:TradePriceRequest"/>
    </message>

    <message name="GetLastTradePriceOutput">
        <part name="body" element="xsd1:TradePrice"/>
    </message>

    <portType name="StockQuotePortType">
        <operation name="GetLastTradePrice">
           <input message="tns:GetLastTradePriceInput"/>

           <output message="tns:GetLastTradePriceOutput"/>
        </operation>
    </portType>

    <binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="GetLastTradePrice">

           <soap:operation soapAction="http://example.com/GetLastTradePrice"/>
           <input>
               <soap:body use="literal"/>
           </input>
           <output>
               <soap:body use="literal"/>

           </output>
        </operation>
    </binding>

    <service name="StockQuoteService">
        <documentation>My first service</documentation>

        <port name="StockQuotePort" binding="tns:StockQuoteBinding">
           <soap:address location="http://example.com/stockquote"/>
        </port>
    </service>

</definitions>

Exemple de Web Service avec SOAP