Cómo consumir un WebService SOAP con PHP

Inicio / Cómo hacer para... / Cómo consumir un WebService SOAP con PHP

Los WebServices son un mecanismo muy útil para integrar aplicaciones a través del protocolo HTTP.

Una de las formas en que se implementan estos mecanismos es a través de SOAP.

Consumirlos usando PHP es bastante simple, para ello se utiliza la clase SOAPClient.

Veamos un ejemplo de cómo consultar la localización física según la IP:

<?php

$url = "http://ws.cdyne.com/ip2geo/ip2geo.asmx?wsdl";

try {
 $client = new SoapClient($url, [ "trace" => 1 ] );
 $result = $client->ResolveIP( [ "ipAddress" => $argv[1], "licenseKey" => "0" ] );

 print_r($result);
} catch ( SoapFault $e ) {
 echo $e->getMessage();
}


echo PHP_EOL;

En este caso, este script debería ser corrido desde CLI (Por ejemplo, si lo guardás como “ws.php”, al ejecutar php ws.php 210.45.151.101 obtendrás la salida:

stdClass Object
(
 [ResolveIPResult] => stdClass Object
 (
 [City] => Huainan
 [StateProvince] => 01
 [Country] => China
 [Organization] => 
 [Latitude] => 32.6264
 [Longitude] => 116.9969
 [AreaCode] => 0
 [TimeZone] => 
 [HasDaylightSavings] => 
 [Certainty] => 90
 [RegionName] => 
 [CountryCode] => CN
 )
)

 

Básicamente, al construir el cliente a partir de la definición de un WSDL están disponibles todos los servicios expuestos como métodos propios (como si estuviesen accesibles en forma local, a pesar de que la verdadera llamada es remota).

Como te imaginarás, si existe la clase SOAPCliente… debe existir la clase SOAPServer (Tema de otro post…).

Acá te dejo el link a las filminas que usé en mi curso de PHP WebServices por si querés profundizar un poco más.

mchojrin

CEO at Leeway
Mauro es Lic. en Ciencias de la Computación.
Su carrera como docente de programación se inició en el año 1997 en la Escuela Técnica ORT.
Actualmente coordina el desarrollo de proyectos web en Leeway y los cursos dictados en la Leeway Academy

Un comentario

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *