Invocar SOAP Web Service via Shell Script

Olá caros leitores, neste artigo apresentarei como invocar um SOAP Web Service através de um Shell Script.
No exemplo a ser apresentado, utilizaremos o Web Service de GeoLocalização por IP fornecido pela Webservicex disponível no seguinte endereço: http://www.webservicex.net/geoipservice.asmx?wsdl

O que é um Web Service?

É uma solução utilizada na integração entre sistemas e para a comunicação entre aplicações construídas em diferentes tecnologias. Com esta tecnologia é possível que novas aplicações possam interagir com aquelas que já existem e que sistemas desenvolvidos em plataformas diferentes sejam compatíveis.

cURL

O cURL é uma biblioteca utilizada via linha de comando para transferir dados através de vários protocolos.
Alguns dos protocolos suportados: FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, FILE, LDAP e LDAPS.
Utilizaremos um dos inúmeros recursos do cURL para consumir o Web Service.

Código do Shell Script

Crie o arquivo invocaWS.sh contendo o seguinte código:

#! /bin/sh
#EndPoint do WebService a ser invocado
ENDPOINT="http://www.webservicex.net/geoipservice.asmx?wsdl"

#Vericacao se o argumento foi fornecido
if [ "$1" = "" ]; then
   echo "Informe o IP"
   exit
fi
curl --silent \
     --data \
     @- \
     --header 'Content-Type: application/soap+xml; charset=utf-8' \
     --user-agent "" \
     ${ENDPOINT} <<EOF | xmllint --format -
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:web="http://www.webservicex.net">
   <soap:Header/>
   <soap:Body>
      <web:GetGeoIP>
         
         <web:IPAddress>$1</web:IPAddress>
      </web:GetGeoIP>
   </soap:Body>
</soap:Envelope>
EOF

Testando o Script

./invocaWS.sh 200.203.123.30

Retorno do Teste

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body>
    <GetGeoIPResponse xmlns="http://www.webservicex.net">
      <GetGeoIPResult>
        <ReturnCode>1</ReturnCode>
        <IP>200.203.123.30</IP>
        <ReturnCodeDetails>Record Found</ReturnCodeDetails>
        <CountryName>BRAZIL</CountryName>
        <CountryCode>BR</CountryCode>
      </GetGeoIPResult>
    </GetGeoIPResponse>
  </soap:Body>
</soap:Envelope>

Boa leitura a todos e espero que seja útil!

VN:F [1.3.4_676]
Rating: 8.0/10 (5 votes cast)
  • Share/Save/Bookmark

Deixe o seu comentário

Posts Relacionados