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:

13 pensamientos sobre “Curso de PHP y servicios Web

  • el 13 octubre, 2011 a las 2:44
    Enlace permanente

    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.

    Respuesta
  • el 21 enero, 2012 a las 18:34
    Enlace permanente

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

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

    gracias

    Respuesta
  • el 23 enero, 2012 a las 0:08
    Enlace permanente

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

    Respuesta
  • el 20 febrero, 2012 a las 1:10
    Enlace permanente

    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!

    Respuesta
    • el 20 febrero, 2012 a las 14:08
      Enlace permanente

      La url del servicio tarda mucho, o estás haciendo algún bucle infinito,…tendrías que cambiar el tiempo máximo de ejecución o pasarlo a segundo plano (asíncrono)…

      Respuesta
  • el 13 agosto, 2014 a las 16:18
    Enlace permanente

    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

    Respuesta

Deja un comentario

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

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

 

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.