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: 5726 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: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
<?
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: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
<?
// 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: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
<?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: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
<?
// 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: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
<?
// 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: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- 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 |






