New question

Question:

Date: 27-01-2015 04:09:58 (In Spanish)

Ejemplos de Webservices en PHP[Resolved]

Alguien me puede orientar donde aprender sobre Webservices en PHP, y si hay ejemplos mucho mejor. Tags: NuSOAP - PHP - Question - REST - SOAP - SoapClient - SoapServer - Webservices Votes: 3 - Answers: 9 - Views: 96 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 27-01-2015 06:03:59 Hola Jose, aquí te dejo el link a la página oficial de PHP con todo el detalle sobre los tipos de Web services soportados por el lenguaje: http://php.net/manual/es/refs.webservice.php

    Al margen de esto, por lo general cuando hablamos de Web services, este termino es rapidamente asociado a SOAP (Simple Object Access Protocol) y REST (Representational State Transfer), ya que son los más extendidos.

    SOAP (Simple Object Access Protocol):

    Para implementar un server SOAP en PHP te recomiendo utilizar la librería NuSOAP, aquí el link hacia el proyecto en SourceForge: http://sourceforge.net/projects/nusoap/

    Te recomiendo la librería NuSOAP en vez de la clase SoapServer nativa de PHP porque esta última no tiene una forma incluida de generar los archivos WSDL (Web Services Description Language), archivo que describe los servicios que ofrece el servicio web. Recuerdo haber ledio en php.net que había una forma experimental de general los WSDL de forma nativa, pero no he podido volver a dar con la nota que lo explicaba (tal vez la quitaron).

    Con respecto al cliente SOAP, la clase SoapClient nativa de PHP me ha dado tan buenos resultados como el cliente de NuSOAP.

    REST (Representational State Transfer):

    Con respecto al server REST, la forma en que yo implemento el servicio (ya que no hay un manual oficial para esto) es creando una URL distinta para cada tipo de servicio solicitado. Luego tomo el control de las peticiones HTTP que llegan a dichas URL's (peticiones: GET, POST, PUT, DELETE) por medio del array superglobal $_SERVER y un simple switch.

    Ejemplo:
    $metodo = $_SERVER['REQUEST_METHOD'];
    
    switch ($metodo) {
        case 'GET':
            //control del GET 
            break;
        case 'POST':
            //control del POST 
            break;
        case 'PUT':
            //control del PUT  
            break;
        case 'DELETE':
            //control del DELETE  
            break;
        default:
            //si no es ninguno de los anteriores, hacemos control del ERROR
            break;
    }


    Luego deberás seguir la regla de oro:
    * Para leer usa peticiones GET
    * Para escribir usa peticiones POST
    * Los mensajes por lo general se codifican en XML o JSON, puedes utlizar las funciones nativas PHP json_encode() y json_decode() para trabajar con JSON, y/o las multiples funciones nativas SimpleXML para trabajar con XML.

    El cliente REST puede ser un script PHP que utilice cURL para realizar las peticiones GET, POST, etc.
    Aquí te dejo el link hacia la documentación oficial de cURL http://php.net/manual/es/book.curl.php

    Espero que mi respuesta te sea de ayuda,

    Saludos y buen código!
      Votes: 5 - Link answer
     
  • Date: 27-01-2015 07:29:35 Muchas gracias Fernando, esta muy interesante esto de los web services.

    Me pondré a aprender sobre esto. Con estas referencias tengo para un buen rato.

    Saludos!
      Votes: 0 - Link answer
     
  • Date: 27-01-2015 08:20:57 Fernando muy buena explicacion
    Realmente los Webservices son muy interesantes
    saludos
      Votes: 0 - Link answer
     
  • Date: 27-01-2015 08:34:27 Estoy de acuerdo Walter   Votes: -1 - Link answer
     
  • Date: 28-01-2015 23:03:32 tengo una duda, alguien me podría dar un ejemplo funcional, de un web services nusoap, consumido por netbeans java, en una aplicacion de escritorio, e tratado de encontrar como hacer esto, pero no me a sido posible salvo hacerlo con java para web, y lo que quiero es consumir el web service en php, con java en una aplicación de escritorio.   Votes: -1 - Link answer
     
  • Date: 29-01-2015 05:16:34 Hola Mauricio, no comprendo muy bien tu pregunta, puedo deducir que lo que necesitas es un ejemplo PHP de Webservice NuSOAP y un ejemplo JAVA de un cliente de escritorio que consuma el Webservice PHP, no?

    Bueno, aquí te adjunto un ejemplo de Webservice NuSOAP que expone el método "saludar", al cual se le puede envíar un nombre y este entregará un saludo:

    <?php
    //incluyo la librería
    require_once('lib/nusoap.php');
    
    //creo el objeto soap_server y lo configuro
    $server = new soap_server;
    $server->configureWSDL('PHPCentral', 'urn:phpcentral');
    $server->wsdl->schemaTargetNamespace = 'urn:phpcentral';
    
    //declaro la función del webservice
    function saludar($nombre) {
        if (empty($nombre)) {
            return new soap_fault('Cliente', '', 'Ingrese su nombre!');
        }
        return "Hola " . $nombre;
    }
    
    //registro la función del webservice
    $server->register(
            'saludar' //nombre de la función
            , array('nombre' => 'xsd:string') //parametro de entrada (un string)
            , array('return' => 'xsd:string')  //parametro de retorno (un string)
    );
    
    // se crea el HTTP listener
    $HTTP_RAW_POST_DATA = (isset($HTTP_RAW_POST_DATA)) ? $HTTP_RAW_POST_DATA : '';
    $server->service($HTTP_RAW_POST_DATA);
    exit();


    No te puedo ayudar con el cliente JAVA, pero para los fines del ejemplo adjunto el código de un cliente PHP NuSOAP que consume el webservice:

    //se incluye la librería
    require_once('lib/nusoap.php');
    
    $urlWebService = 'http://www.phpcentral.com/ejemplos/webservice_nusoap01/server.php';
    $urlWSDL = $urlWebService . '?wsdl';
    
    // Creo el objeto soapclient
    $clienteSOAP = new nusoap_client($urlWSDL, 'wsdl');
    
    // invocación del método del webservice
    $respuesta = $clienteSOAP->call('saludar', array('nombre' => 'Fernando Mosquera'));
    
    // muestro la respuesta
    echo '<pre>';
    print_r($respuesta);


    Espero que el ejemplo que sea de ayudar (mismo también para Jose que fué quien planteó la pregunta originalmente y requería de un ejemplo).

    Pueden ver el Webservice funcionando y hacerle pedidos de prueba en la siguiente url:
    http://www.phpcentral.com/ejemplos/webservice_nusoap01/server.php

    Saludos y buen código.
      Votes: 0 - Link answer
     
  • Date: 30-01-2015 14:18:51 si es que es mas, yo tengo hasta estructuras creadas, para almacenas en una matriz de datos consultas, nusoap lo domino bien, el problema que tengo es que no se como consumir el web service en una aplicacion de escritorio.   Votes: -1 - Link answer
     
  • Date: 16-09-2016 11:05:52 Saludos, yo tengo una duda muy parecida a la de mauricio, mi duda es la siguiente: ¿Yo necesito hacer un web service que tome datos de un sistema administrativo hecho en fox pro y sql server y esos datos utilizarlos con el web services hecho en php? pero lo que no entiendo es si yo tengo que codificar algo en la aplicación de escritorio de fox pro para que utilice el web service...   Votes: -1 - Link answer
     
  • Date: 07-12-2019 05:14:26 estimado fernando una consulta, estoy haciendo el envio con la clase soap de php y al retornar los valor me los da en formato string que puede estar pasando?   Votes: 0 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In