SOAP es un protocolo de intercambio de datos entre diferentes procesos basado en XML. Una definición bastante completa la podéis encontrar en wikipedia. Una vez dicho esto vamos a empezar a ver cómo creamos un web service básico en PHP y que use dicho protocolo.
Lo primero que necesitaremos será descargar NuSOAP a nuestro proyecto. Se trata de un pequeño toolkit que nos facilitará la vida con varias clases para trabajar con este protocolo en PHP. Una vez descargado y descomprimido dentro de una carpeta de nuestro proyecto, simplemente la deberemos incluir en el archivo PHP que va a funcionar de web service.
A continuación veremos un ejemplo básico. A nuestro fichero le llamaremos test.php y lo que hará será recibir dos números enteros, multiplicarlos y devolver el resultado.
require_once ( "nusoap.php" ); $server = new soap_server(); $server ->register( 'multiplicarNumeros' ); function multiplicarNumeros( $valor1 , $valor2 ){ $res = $valor1 * $valor2 ; return $res ; } $server ->service( $HTTP_RAW_POST_DATA ); |
A continuación nos hará falta un cliente del web service al que llamaremos cliente.php. Lo que haremos será en el constructor llamar a la url del servidor y mediante la función call() llamar al método que nos multiplicarla los números. Los parámetros de la función los pasaremos en forma de array.
require_once ( "nusoap.php" ); $error = $cliente ->getError(); if ( $error ){ echo "Error: $error" ; } $res = $cliente ->call( "multiplicarNumeros" , array ( "valor1" => "10" , "valor2" => "15" )); $error = $cliente ->getError(); if ( $error ){ echo "Error: $error" ; } else { echo "Resultado: $res" ; } |
Hasta aquí tendríamos un cliente y servidor básico pero para que sea un web service más correcto nos haría falta definir el WSDL en la parte del servidor y así tener una definición de los métodos y parámetros que contiene. Para que NuSoap nos lo genere deberemos cambiar un poco la parte del servidor y nos quedaría de la siguiente forma.
require_once ( "nusoap.php" ); $server = new soap_server(); // Configuramos el namespace y el WSDL $ns = "test" ; $server ->configureWSDL( 'test' , $ns ); $server ->wsdl->schemaTargetNamespace = $ns ; // Cambiamos la llamada para añadirle los parámetros de entrada y salida y el namespace $server ->register( 'multiplicarNumeros' , array ( 'valor1' => 'xsd:integer' , 'valor2' => 'xsd:integer' ), array ( 'return' => 'xsd:integer' ), $ns ); function multiplicarNumeros( $valor1 , $valor2 ){ $res = $valor1 * $valor2 ; return $res ; } $server ->service( $HTTP_RAW_POST_DATA ); |
Ahora simplemente debes acceder a tu navegador y llamar a la URL http://localhost/test.php?wsdl y verás el WSDL que se ha generado.
Necesito un ejemplo de cración de web services con autenticación, usando el SoapHeader
ResponderEliminar