Curso de PHP y servicios Web

Gracias a Pedro A. Castillo Valdivieso disponemos de este Curso de PHP:

Lo interesante, ahora que sabemos como programar servicios web complejos con Java y comunicarlos mediante SOAP es usar la clase que traen las últimas versiones de PHP (desde la 5.x), con un ejemplo sencillo, podemos probar a crear una lista de servicios como los que hay en http://www.service-repository.com/schema/namespaces …

El código sería tan sencillo como lo siguiente:

$wsdl = "http://www.currencyserver.de/webservice/currencyserverwebservice.asmx?WSDL";
echo "Servicios ofertados por <strong>$wsdl</strong>";
$client = new SoapClient($wsdl);
$avail = $client->__getFunctions();
echo '<ul></ul><ul>'; 
foreach($avail as $func) { 
echo "<li>" . $func . "</li></ul>"; } echo '<hr />'; 
echo highlight_string( file_get_contents(__FILE__));

Que devuelve una lista de las operaciones del servicio especificadas por el WSDL.

Y para terminar ya sabéis que podéis crear vuestros propios servicios web con PHP, un ejemplo sencillo:

//Añadiendo función suma:
$cliente = new SoapClient(
null,
array(
"location"=>"http://localhost/simple/serversimple.php",
"uri"=>""
)
);
$suma = $cliente->suma(2,3);
print("La suma de 2 y 3 es :".$suma);

Código fuente de serversimple.php:

function suma($a,$b){
  return intval($a)+intval($b);
}
$server = new SoapServer(null, array('uri'=>""));//Sin WSDL -> uri es obligatorio
$server->addFunction("suma");
$server->handle();

Ver ejemplo funcionando: aquí

Recordar que hay que generar los ficheros WSDL con Katy u otra herramienta.

« Volver al Curso de Servicios Web

Artículos relacionados:

  1. kzokas dice:

    Hola, apenas estoy iniciándome en esto de servicios WEB y SOAP,xml y WSDL son terminos que aun no termino por dominar, quisiera felicitarte por la informacion y tambien hacerte una pequeña consulta, ¿Cual es el codigo de serversimple.php?, yo hize varias cosas pero ninguna me retorna el valor desde un simple function suma($a,$b) hasta una clase llamada suma, y nada hace que me retorne el valor de la funcion de SUMA, podrias proporcionar esa parte del codigo?, PD excelente BLOG.

  2. JuanTarrel dice:

    Gracias por la explicacion, tengo una duda en cuanto a eso, como ejecuto la funcion suma?

    $client->suma(numero1, numero2); ?

    gracias

  3. JuanTarrel dice:

    Podrias mostrar el codigo de prueba.php ?

  4. JuanTarrel dice:

    Y si lo que quiero es consumir un xml con un certificado digital?, conoces alguna forma de hacerlo ?

  5. Rodrigo dice:

    Gracias por la info!
    Intento ejecutar ambos servicios (sin y con WSDL) y en ambos obtengo el mismo error, parece que no llega a acceder al servicio:

    OPERACIONES DEL WEBSERVICE:
    array(3) { [0]=> string(29) “string diHola(string $nombre)” [1]=> string(28) “string diAdios(string $otro)” [2]=> string(24) “int suma(int $a, int $b)” }

    Fatal error: Maximum execution time of 30 seconds exceeded in C:\AppServ\www\….

    ¿Qué puede pasar? ¿Puede ser por configuración? ¿Permisos?

    Gracias!

  6. Tecnologico Mexico dice:

    hola te felicito por la informacion ! quisiera saber si podrias compartirme por correo la presentacion vista aqui de php , ya que me seria de gran utilidad para las clases que doy en la universidad , respetando claro los derechos de autor . muchas gracias

Please type the characters of this captcha image in the input box

Por favor escriba los caracteres de la imagen captcha en el cuadro de entrada

footer
jbelon © | sitemap.xml