Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica.
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser. Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book Apenas R$ 32,90
Você está aqui: PHP ::: PHP + SOAP Web Services ::: WSDL (Web Services Description Language)

Usando a ferramenta php2wsdl para gerar um documento WSDL (Web Services Definition Language) a partir de nossas classes PHP

Quantidade de visualizações: 5639 vezes
Embora seja possível escrever web services baseados em SOAP sem um documento WSDL, é prática comum disponibilizá-lo, visto que há muitas ferramentas que conseguem analisar um arquivo WSDL, extrair seus métodos (com seus devidos parâmetros e retornos) e contruir as requisições ao serviço web.

Nesta dica eu mostrarei como usar a ferramenta php2wsdl (PHP WSDL Generator) para construir um arquivo WSDL automaticamente a partir da leitura de uma ou mais classes PHP. Para isso, siga atentamente os passos abaixo:

1) Faça o download do PHP WSDL Generator. É muito fácil encontrá-lo na internet. Uma boa fonte é o endereço http://www.phpclasses.org. Quando encontrar um arquivo com o nome de php2wsdl, faça o download. É bem provável que esta seja a ferramenta que procuramos.

2) Descompacte o arquivo e mova o seu conteúdo para o diretório da sua aplicação PHP. No exemplo importaremos a classe WSDLCreator que estará no diretório php2wsdl.

3) Crie a classe abaixo na raiz da sua aplicação:

Código para Calculadora.php:

<?
  class Calculadora{   
    /**
    * Soma dois valores
    *
    * @param float $n1
    * @param float $n2
    * @return float
    */
    public function somar($n1, $n2){
      return ($n1 + $n2);
    }
  }
?>

Veja que esta classe contém um método somar() que recebe dois valores numéricos e retorna um outro valor númerico. Note que inseri a documentação correspondente para facilitar o trabalho do php2wsdl.

4) Vamos agora escrever o documento PHP que fará a ligação entre o php2wsdl e a classe Calculadora. Veja o código a seguir:

Código para gerar_wsdl.php:

<?
  // importamos a classe WSDLCreator.php
  require("php2wsdl/WSDLCreator.php");
  // informamos o nome do namespace e o endereço do arquivo WSDL
  $wsdl_creator = new WSDLCreator("CalculadoraWSDL",
     "http://www.arquivodecodigos.net/estudos_soap/arquivo.wsdl");
  // adicionamos a classe Calculadora 
  $wsdl_creator->addFile("Calculadora.php");
  // agora indicamos a URL para acessar os métodos da classe Calculadora
  $wsdl_creator->addURLToClass("Calculadora",
     "http://www.arquivodecodigos.net/estudos_soap/servidor.php");
  // criamos o arquivo WSDL
  $wsdl_creator->createWSDL();
  // e o salvamos com o nome desejado
  $wsdl_creator->saveWSDL("arquivo.wsdl");
?>

Neste momento já podemos executar o arquivo gerar_wsdl.php. Abra-o no seu navegador e verifique o arquivo "arquivo.wsdl" gerado. Sua estrutura será algo como:

<?xml version='1.0' encoding='UTF-8'?>
<!-- WSDL file generated by PHP WSDLCreator (http://www.protung.ro) -->
<definitions name="CalculadoraWSDL" targetNamespace="urn:CalculadoraWSDL" 
xmlns:typens="urn:CalculadoraWSDL" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
xmlns="http://schemas.xmlsoap.org/wsdl/">
  <message name="somar">
    <part name="n1" type="xsd:float"></part>
    <part name="n2" type="xsd:float"></part>
  </message>
  <message name="somarResponse">
    <part name="somarReturn" type="xsd:float"></part>
  </message>

  <portType name="CalculadoraPortType">
    <operation name="somar">
      <documentation>Soma dois valores</documentation>
      <input message="typens:somar"></input>
      <output message="typens:somarResponse"></output>
    </operation>
  </portType>

  <binding name="CalculadoraBinding" type="typens:CalculadoraPortType">
    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http">
    </soap:binding>
    <operation name="somar">
      <soap:operation soapAction="urn:CalculadoraAction"></soap:operation>
      <input>
        <soap:body namespace="urn:CalculadoraWSDL" use="encoded" 
          encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
        </soap:body>
      </input>
      <output>
        <soap:body namespace="urn:CalculadoraWSDL" use="encoded" 
          encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
        </soap:body>
      </output>
    </operation>  
  </binding>
  
  <service name="CalculadoraWSDLService">
    <port name="CalculadoraPort" binding="typens:CalculadoraBinding">
      <soap:address 
        location="http://www.arquivodecodigos.net/estudos_soap/servidor.php">
      </soap:address>
    </port>
  </service>
</definitions>

Obteve algo parecido? Vamos continuar então.

5) Agora que já criamos a classe Calculadora para representar as operações do nosso web service e já geramos o arquivo WSDL, chegou a hora de criar o servidor SOAP. Veja o código:

Código para servidor.php:

<? 
  // importamos a class Calculadora
  require("Calculadora.php");

  // criamos uma nova instância da classe SoapServer fornecendo o arquivo WSDL
  $servidor = new SoapServer('arquivo.wsdl');
  // definimos a classe responsável por executar os métodos descritos no WSDL
  $servidor->setClass("Calculadora");
  // e finalmente gerenciamos a requisição
  $servidor->handle();
?>

Note que nunca chamamos servidor.php diretamente no navegador. Em vez disso efetuamos uma chamada ao arquivo "arquivo.wsdl" a partir da página cliente.php e o próprio arquivo WSDL se encarrega de fazer a ponte com o servidor.php. Veja agora o código para o cliente.php:

Código para cliente.php:

<?
  // vamos evitar que o arquivo WSDL seja colocado no cache
  ini_set("soap.wsdl_cache_enabled", "0");
 
  try{
     // definimos o endereço do arquivo WSDL
     $cliente = new SoapClient("http://www.arquivodecodigos.net/estudos_soap/arquivo.wsdl");
     // disparamos o método somar();
     $resultado = $cliente->somar(4, 11);
     // mostramos o resultado
     echo "A soma dos dois valores é: " . $resultado;
  } 
  catch(SoapFault $erro){ // houve algum erro?
     var_dump($e);
  }
?>

6) Penso que já estamos prontos para o teste final. Se você seguiu todos os passos atenciosamente, já pode chamar o arquivo cliente.php no seu navegador. Se tudo correr bem, você verá o seguinte resultado:

A soma dos dois valores é: 15


Link para compartilhar na Internet ou com seus amigos:

Desafios, Exercícios e Algoritmos Resolvidos de PHP

Veja mais Dicas e truques de PHP

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 29 usuários muito felizes estudando em nosso site.