Consumindo webservice em PHP

Consumindo webservice em PHP


 

Olá pessoal. Hoje iremos criar nosso primeiro Web Service em PHP, e de duas maneiras.


Vamos revisar tudo que vimos até agora
de uma maneira bem resumida, pois creio que nem todos leram os
artigos anteriores, risos.


Um dos principais objetivos dos Web Services é fazer
a comunicação entre sistemas heterogêneos
de maneira distribuída. Na figura
abaixo, temos um exemplo de comunicação entre dois servidores,
um deles, dotado dos seguintes “apetrechos” (Windows, ISS, ASP)
e outro com (Linux, Apache e PHP).



UDDI (Universal Description,
Discovery and Integration): Descoberta e Publicação
WSDL (Web Service Definition Language): Descrição
SOAP (Simple
Object Access Protocol): Mensagens


Passos 01 e 02: Primeiramente, gera-se o arquivo WSDL para descrever um Web Service, este arquivo geralmente é gerado no formato XML. Nele se encontram o nome da função, variáveis de entrada, saída, tipo dos dados, etc. Estes dados são salvos na UDDI, onde você encontra também a URL para a conexão destes serviços.


Passos 03, 04, 05
e 06
: A máquina acessa o UDDI para buscar informações sobre um determinado serviço, através do seu WSDL ela tem acesso ao nome da função e as variáveis de entrada e saída com seus respectivos tipos de dados. Após é feita a comunicação através do protocolo SOAP, utilizando-se o XML como mensagem.


Bom, para mais informações, já sabem, os demais artigos tratam sobre cada tecnologia. Vamos ao que interessa.


Existem duas maneiras mais utilizadas no PHP para se criar um Web Service, uma delas é utilizando-se do módulo SOAP Extension, uma nova extensão disponível a partir da versão 5 do PHP, porém muito limitada e, outra é a utilização de uma API desenvolvida em PHP, denominada de NuSOAP. Sua principal vantagem é o seu suporte embutido ao WSDL.


Obs.: Não vou descrever toda a teoria novamente, então, caso não entenda algum passo mencionado abaixo, favor consultar os artigos anteriores. Os arquivos fontes estão
no final do artigo.


01. Utilizando o módulo SOAP Extension
do PHP


Onde baixar?


http://phpsoaptoolkit.sourceforge.net/phpsoap/


Configuração


Entre no php.ini e adicione a seguinte linha:


extension=php_soap.dll 


Códigos


Como exemplo, vamos criar um Hello Name.


server.php



cliente.php



Acessando cliente.php


Resultado:



02. Utilizando a classe NuSOAP


Onde baixar?


http://sourceforge.net/projects/nusoap/


Configuração


Basta incluir no código fonte. (include “caminho/nusoap.php”;)


Lembre-se!


. Comentar a linha ;extension=php_soap.dll  no php.ini. Caso o php_soap.dll esteja ativo a classe nuSOAP não irá funcionar.


. Reiniciar
o Apache.


Vamos ao que interessa


server.php



cliente.php



Acessando o cliente.php


Resultado:



Gerando um WSDL com o nuSOAP


server2.php



cliente2.php



Acessando o WSDL no NuSOAP


Adicione  (?wsdl) no final do arquivo Server.php (http://caminho/server2.php?wsdl)
, ou simplesmente acesso no http://caminho/server2.php e clique em WSDL.



Ao clicar no nome da função (hello,
no nosso caso), você tem acesso às informações
preenchidas, como parâmetro de entrada, saída, url
de acesso, etc.



Outra vantagem do nuSOAP, já citada no
início, é a geração do documento
WSDL, como visto abaixo.



Dica:


Caso queiram visualizar o conteúdo das
mensagens, adicionem o código abaixo no final do cliente.php.


echo ‘<h2>Requisição</h2>’;
echo ‘<pre>’.htmlspecialchars($client->request).'</pre>’;
echo ‘<h2>Resposta</h2>’;
echo ‘<pre>’.htmlspecialchars($client->response).'</pre>’;
// Exibe mensagens para debug
echo ‘<h2>Debug</h2>’;
echo ‘<pre>’.htmlspecialchars($client->debug_str).'</pre>’;


Download dos fontes: aqui.


Espero que o conteúdo desse artigo tenha
sido útil. Nos próximos artigos falaremos de Integração
de PHP/Java e Segurança em Web Services.


Grande abraço!

Comentários

Postagens mais visitadas deste blog

Instalação NetBeans

Calcular frete pelos correios via PHP