Programación , Domótica y microcontroladores.

Soap

SOAP (Simple Object Access Protocol, Protocolo de acceso a objetos simple) es unprotocolo basado en XML que consiste de tres partes: la primera define cuál es el mensaje ycómo procesarlo, la segunda es un sistema de reglas de codificación para expresar tipos dedatos definidos y una tercera parte para representar respuestas de llamadas por parte deprocedimientos remotos.

La diferencia básica entre los dos protocolos anteriores es su complejidad. XML-RPC estádiseñado para ser sencillo, mientras que SOAP está hecho con la idea de ofrecer un soportecompleto de todo tipo de servicio web.

Por otro lado, también es conveniente describir qué es WSDL. Pues bien, WSDL es un formatoXML que describe los servicios de red como un conjunto de puntos finales que procesanmensajes contenedores de información orientada tanto a documentos como a procedimientos.Las operaciones y los mensajes se describen de manera abstracta y después se enlazan a unprotocolo de red y a un formato de mensaje concreto para definir un punto final de red.
Fuente:http://es.scribd.com/doc/16175477/Implementando-Servicios-Web-Con-Php

Desarrollo
Para realizar a punta de código , los servicios web son un poquito complejos porque debes conocer muy bien su estructura pero afortunadamente hay una librería llamada NuSoap, que hace ese trabajo por nosotros.Pero, aún así, se debe meter mano para obtener mejores resultados.

Hace unos 6 meses, yo quería realizar un servicio web para una aplicación; que tomaba los datos de una base de datos en Mysql y lo debía poner disponibles para los usuarios que desean consumirla.
Pero leyendo algunos sitios , concluí , que lo mejor era optar por la librería Nusoap.Pues , es así, como comencé a probar esta librería.Tuve algunos problemas pero los solucione.
En el proyecto , adjunto ejemplos desde los más básicos hasta los mas complejos.
Para lograr la implementación del servicio web(web service) , he utilizado la librería NuSOAP que viene adjunta al proyecto que posteo.

<?php
include('lib/nusoap.php');
$server = new soap_server;
$ns="http://localhost:88/Webserivce/";
$server->configureWSDL('Servicios',$ns);
$server->wsdl->schematargetnamespace = $ns;

$server->wsdl->addComplexType(
        'ArregloDeEstructuras',
        'complexType',
        'array',
        'sequence',
        'http://schemas.xmlsoap.org/soap/encoding/:Array',
        array(),
        array(array('ref' => 'http://schemas.xmlsoap.org/soap/encoding/:arrayType',
         'wsdl:arrayType' => 'tns:Estructura[]')
        ),
        'tns:Estructura'
);

$server->register('consultaPersonas',
                  array('$param' => 'xsd:string'),
                  array('return'=>'tns:ArregloDeEstructuras'),
                  $ns);




function consultaPersonas($param) {
    $arreglo = array();
    $arreglo[] = array('Nombre'=>"Juan", 'Apellidos'=>"Torres", 'Edad'=>18);
    $arreglo[] = array('Nombre'=>"Teresa", 'Apellidos'=>"Jiménez Sánchez", 'Edad'=>19);
    $arreglo[] = array('Nombre'=>"Efraín", 'Apellidos'=>"Ovalles López", 'Edad'=>22);
    return $arreglo;
}





// Use the request to (try to) invoke the service
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
?> 

Y es así, como se realiza un servicio web usando la librería NuSoap.
Descargar ejemplo
No olvides comentar en forma de agradecimiento.

Anuncios

Comentarios en: "Implementando Servicios web en PHP+Mysql" (6)

  1. cristian dijo:

    me salvaste la vida, gracias!!!!

  2. He probado el codigo y se me presenta un error (Error: Response not of type text/xml: text/html), hice la prueba con una base de datos de prueba y adapte los campos que iba a devolver el query, comprobe que los tipos de datos que arroja fueran los correctos y aun se presenta el error

  3. Amigo estoy tratando de consumir un web service desde PHP usando NUSOAP y WSDL2NUSOAP , pero de verda que ni idea , de hecho soy nuevo en PHP , puedes ayudarme ? , el servicio lo que haces es que me devuelve un numero cualquiera , no le envio nada solo lo llamo , esta es la oprimera prueba que hago para poder ir acostumbrandome a la sintaxis , espero me puedas explicar PASO a Paso , tengo el boton donde voy a ejecutar todo y mostrar el resultado en un label

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: