Un semplice metodo per effettuare un test di un Web Services senza la necessità di un vero client (né un tool general purpose né un software sviluppato a partire dal WSDL del servizio), eseguibile in pochi minuti da shell linux.

Può essere utile per verificare la connetività tra il server e lo host su cui girerà il software client oppure per creare un semplice script di “ping applicativo” da far girare secondo necessità.

Per prima cosa, va creato il file con il corpo della richiesta SOAP: è sufficiente un semplice file con il tag “Envelope” ed il suo contenuto, senza il preambolo della versione XML. Il nome del file non ha importanza: in questo esempio, poniamo richiesta.xml.

Questo può rappresentare bene il caso base:

<soapenv:Envelope xmlns:soapenv=”http://schemas.xmlsoap.org/soap/envelope/”&gt;
<soapenv:Header/>
<soapenv:Body/>
</soapenv:Envelope>

Adesso basta chiamare il comando wget con alcuni parametri:

  • URL completo del Web Services
  • post-file, con il precedente file XML come valore (questo è il parametro fondamentale, fa anche sì che la comunicazione venga effettuata con il metodo POST)
  • header: inserire almeno ‘Content-Type: text/xml’

più eventuali altri parametri di interesse (-O per l’output, no-check-certificate per aggirare i certificati self signed, eccetera).

Quindi ad esempio:

wget https://example.com/webservices \
–no-check-certificate \
–post-file=richiesta.xml \
–header=’Content-Type: text/xml’ \
-O risposta.xml

Come nota a margine: un metodo semplice e veloce per generare l’XML di richiesta SOAP, può essere l’uso di software come SoapUI (che permette anche la visione degli header HTTP di richiesta) o il Web Services Explorer di Eclipse.

Molte info le ho prese da qui: http://sarcelle.net/post/45987310371/call-soap-web-services-using-wget

Annunci