📋
tecnologie5
  • Tecnologie
  • Le basi di HTTP - HyperText Transfer Protocol
  • HTTP Explained
  • HTTP/1 vs HTTP/2 vs HTTP/3
  • Xml e JSON - rappresentazione dei dati
  • Web services
    • SOAP - Simple Object Access Protocol
    • REST - Representation State Transfer
    • Letture su REST
    • Verifica su Web Services
    • .... su Web Services
    • REST Authentication & Authorization
      • Pit Stop
    • Intro to gRPC: The REST alternative
    • GraphQL e gRPC
  • Learn-js.org
  • TypeSpec
  • Corso Java
  • Intro to Hapi: The Node.js framework
  • Hapi Tutorial Series
  • CP: Concurrency: State Models and Design Patterns
Powered by GitBook
On this page
  • ESEMPIO CHIAMATA a servizio SOAP
  • Esempio con client JavaScript
  • Esercizi

Was this helpful?

  1. Web services

SOAP - Simple Object Access Protocol

PreviousWeb servicesNextREST - Representation State Transfer

Last updated 2 years ago

Was this helpful?

ESEMPIO CHIAMATA a servizio SOAP

Free, public SOAP web services example:

Tramite SoapUI, inserendo l'url del WSDL esposta dal web service, vi genera dei template XML della request SOAP e permette di invocare i metodi del web service.

SoapUI parsando il WSDL crea questo template per la richiesta CelsiusToFahrenheit:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://learnwebservices.com/services/tempconverter">
   <soapenv:Header/>
   <soapenv:Body>
      <tem:CelsiusToFahrenheitRequest>
         <tem:TemperatureInCelsius>?</tem:TemperatureInCelsius>
      </tem:CelsiusToFahrenheitRequest>
   </soapenv:Body>
</soapenv:Envelope>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <CelsiusToFahrenheitResponse xmlns="http://learnwebservices.com/services/tempconverter">
         <TemperatureInFahrenheit>64.4</TemperatureInFahrenheit>
      </CelsiusToFahrenheitResponse>
   </soap:Body>
</soap:Envelope>

con il valore convertito in gradi Fahrenheit.

Se ad esempio nella request utilizzo un valore come AA contenuto dell'elemento tem:TemperatureInCelsius, si ottiene il messaggio di errore SOAP:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <soap:Fault>
         <faultcode>soap:Client</faultcode>
         <faultstring>Unmarshalling Error: AA  If you use comma (,) character for decimal separator, change it to dot (.) character!</faultstring>
      </soap:Fault>
   </soap:Body>
</soap:Envelope>

perché nella richiesta utilizziamo un valore non ammesso in base al formato della richiesta specificato nel WSDL.

SoapUI è utilizzato per eseguire test a un applicazione, noi lo utilizziamo come comodo client per invocare i nostri web service.

Esempio con client JavaScript

Esempio di un invocazione di un web-service SOAP con JavaScript:

const url = "https://apps.learnwebservices.com/services/hello";
const request = `<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Header/>
    <soapenv:Body>
        <HelloRequest xmlns="http://learnwebservices.com/services/hello">
            <Name>John Doe</Name>
        </HelloRequest>
    </soapenv:Body>
 </soapenv:Envelope>`;

 const fetchData = {
    method: 'POST',
    body: request
 };

 fetch(url, fetchData)
   .then(function(response) {
     return response.text();
   })
   .then(function(xml) {
       const xmlDoc = new DOMParser().parseFromString(xml, "text/xml");
       console.log(xmlDoc.getElementsByTagNameNS("http://learnwebservices.com/services/hello", "Message")[0].textContent);
   })
   .catch(function(error) {
     console.log("Error calling webservice: " + error);
   });

Esercizi

Vedere esempio utilizzando tool per fare chiamate a servizi soap partendo dal Web Services Description Language (WSDL) esposto dal web service.

Ad esempio utilizzando il WSDL:

Inserendo ad esempio il valore 18 ad esempio, come contenuto dell'elemento tem:TemperatureInCelsius, facendo la request POST HTTP a si ottiene la seguente risposta dal web service:

Utilizza il client o (esiste di quest'ultimo anche la possibilità di utilizzare il servizio web senza scaricare il client) per importare il WSDL del convertitore di temperature (esempio di sopra) e fare alcune chiamate ai metodi esposti dal web service.

SoapUI
https://apps.learnwebservices.com/services/tempconverter?wsdl
https://apps.learnwebservices.com/services/tempconverter
SoapUI
Postman
LogoLearn webservices