![]() |
|||||
![]() Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
|
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 PHPQuantidade 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 |
![]() |
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 |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |