-->

Webservice com WSDL no PHP

6

Category : PHP

 

Criar Webservices no PHP é uma tarefa realtivamente simples, a grande dificuldade esta em gerar WSDL´s. Isso acontece porque apesar do PHP5 trazer grandes funcionalidades nesse campo, ele não gera o WSDL. Para ajudar, criar WSDL´s é extremamente complexo, com todas as suas variações e opções.

Quando disposnibilizamos um webservice para a plataforma PHP é facil e muito rápido de ser feito, apenas algumas linhas de código para o server e para o client são suficientes para realizar a transação.

Exemplo1:

server.php:

<?php

 
      /*
       * Função utilizada para autenticar o usuário na rede.
      */
    function Auth($login, $senha){
   
      if(trim($login) == NULL){
          return 0;
      }
   
      $dbconn = pg_connect("host=10.0.0.1 port=5432 dbname=database user=master password=master");
      $query = "select count(*) from usuarios where login=’".$login."’ and pass=’".$senha."’";
   
      $result =  pg_query($dbconn, $query);
   
      return $row[0]; // retorna 1 se validar, retorna 0 se não validar
   
   
    } 
 
  $server = new SoapServer(null, array(’uri’ => ‘http://auth.localhost.com.br/ws_auth/’)); // cria o ambiente para servir o webservice

  $server->addFunction("Auth"); // adiciona a função de autenticação ao escopo

  $server->handle();

 
?>
 

cliente.php:

<?php

    /**
     * Cria uma instancia do webservice
     */

    $client = new SoapClient(null,array(
    ‘location’ => ‘http://auth.localhost.com.br/ws_auth/server.php’,
    ‘uri’ => ‘http://auth.localhost.com.br/ws_auth/’,
    ‘trace’ => 1));

    /**
     * Para charmar a autenticação deve-se passar o login e a senha que ser quer validar como segue
     *
     * $result = $client->Auth(’login’,’senha’);
     *
     */
   
       $result = $client->Auth(’usuario’,’senha’);
    
      
       /**
        * resultado da autenticação
     *
     */
    print_r($result);
 
?>
 

E pronto, muito simples não? O problema é que esse tipo de webservice não é processado por outras plataformas por não gerar WSDL. Plataformas como .NET, JAVA e RUBY precisa de um WSDL para seguir o modelo do objeto que será gerado. Para resolver isso, você pode criar um WSDL seguindo as especificações do W3C (http://www.w3.org/TR/wsdl) ou usar alguma classe de terceiro.

Temos:

Eu já trabalhei com NuSOAP mas deixei de lado, pois ela possui um nome que entra em conflito com uma função nativa do PHP, e para evitar dores de cabeça na distribuição eu resolvi optar por outra classe. Eu escolhi a Webservice Helper tool, por sua facilidade de uso. Todas as classes acima são utilizadas em ambiente de produção, basta escolher a que se adeque melhor ao seu uso.

A Webservice Helper tool consegue criar WSDL com PHP de uma maneira muito fácil e direta. Basicamente se escreve uma classe, adiciona essa classe ao escopo e pronto, o WSDL está pronto para usar, não vou por um exemplo completo aqui para não ficar com o post muito longo, caso tenha alguma dúvida me mande um e-mail. A classe é bem explicada e possui um exemplo muito bom. Você pode baixa-la aqui.

 

Tags BlogBlogs: php, wsdl no php, wsdl, webservice, webservice com php