PHP5 e Clientes para Web Services - Parte 1
Web Services servem para criar um canal onde é possível integrar sistemas de diferentes linguagens, imagine que temos um complexo projeto feito em Java, usando protocolos de Web Services poderiamos facilmente acessá-lo por outras soluções (como o .Net, PHP, etc).
Para saber maiores detalhes sobre os Web Services acessem esse ótimo artigo do Vitor Fernando Pamplona no site Java Free:
http://www.javafree.com.br/home/modules.php?name=Content&pa=showpage&pid=42
Apenas lembrando que nos Web Services temos a parte cliente que acessa o serviço e a parte servidor que provém o serviço para os clients acessarem, nesse artigo iremos detalhar como acessar (cliente), e numa futura segunda versão explicarei como criar (servidot) um Web Services no PHP para outros clients acessarem.
Para criar o Web Services usaremos a linguagem Java devido a facilidade e também um framework que gera os Web Services automaticamente para você chamado Axis (http://ws.apache.org/axis/). Primeiro instalamos o framework Axis, depois criaremos um Web Service para acessarmos pelo PHP, para fazer isso leiam o tutorial acima do Java Free.
Depois de lido e entendido o tutorial do Java Free, já podemos criar a nossa classe Java que irá se tornar num Web Service.
Abaixo vai o código fonte do MyWebServices.java:
Obs: Copie a classe MyWebServices.java acima e cole dentro do diretório "axis" do Apache Tomcat e renomeie para "MyWebServices.jws", como explica no tutorial do Vitor.
Agora de volta para o Php acrescentamos a seguinte linha no php.ini:
Restarta o servidor Apache e verifica se a extensão do SOAP foi instalada corretamente.
Depois coloque as seguintes linhas num arquivo php.
Lembrando que estamos acessando o Web Service feito em Java e usando o servidor Tomcat. Para o PHP e outras linguagens acessarem o Web Sevice precisamos configurar o arquivo WSDL (Web Service Definition Language). O framework Axis já faz esse trabalho árduo para gente, mas se caso queiram maiores detalhes dos WSDLs acessem o W3C na URL abaixo:
http://www.w3.org/TR/wsdl#_wsdl
Usando a classe SoapClient abrimos a conexão com o serviço. O método "__cal" serve para chamar um método do Web Service e no seu segundo argumento passamos os paramêtros necessários.
Existem outros comandos para trabalharem com Web Services mas os 2 mostrados acima já servem para a idéia inicial desse artigo, caso vocês queiram saber outros comandos acessem o manual oficial na URL abaixo:
http://br2.php.net/manual/pt_BR/ref.soap.php
Na próxima edição desse tema explicarei como criar Web Services no PHP para prover acesso para outras linguagens (e também pelo PHP).
Sem mais,
Rodrigo.
Para saber maiores detalhes sobre os Web Services acessem esse ótimo artigo do Vitor Fernando Pamplona no site Java Free:
http://www.javafree.com.br/home/modules.php?name=Content&pa=showpage&pid=42
Apenas lembrando que nos Web Services temos a parte cliente que acessa o serviço e a parte servidor que provém o serviço para os clients acessarem, nesse artigo iremos detalhar como acessar (cliente), e numa futura segunda versão explicarei como criar (servidot) um Web Services no PHP para outros clients acessarem.
Para criar o Web Services usaremos a linguagem Java devido a facilidade e também um framework que gera os Web Services automaticamente para você chamado Axis (http://ws.apache.org/axis/). Primeiro instalamos o framework Axis, depois criaremos um Web Service para acessarmos pelo PHP, para fazer isso leiam o tutorial acima do Java Free.
Depois de lido e entendido o tutorial do Java Free, já podemos criar a nossa classe Java que irá se tornar num Web Service.
Abaixo vai o código fonte do MyWebServices.java:
public class MyWebServices { public int soma(int valor1, int valor2) { return valor1 + valor2; } }
Obs: Copie a classe MyWebServices.java acima e cole dentro do diretório "axis" do Apache Tomcat e renomeie para "MyWebServices.jws", como explica no tutorial do Vitor.
Agora de volta para o Php acrescentamos a seguinte linha no php.ini:
extension=php_soap.dll
Restarta o servidor Apache e verifica se a extensão do SOAP foi instalada corretamente.
Depois coloque as seguintes linhas num arquivo php.
<?php try { $client = new SoapClient("http://localhost:8080/axis/MyWebServices.jws?wsdl"); $valor = $client->__call("soma", array(10, 50)); echo "Resultado da soma: $valor"; } catch (Exception $exception) { echo "Aconteceu algum erro: ".$exception->faultstring.""; } ?>
Lembrando que estamos acessando o Web Service feito em Java e usando o servidor Tomcat. Para o PHP e outras linguagens acessarem o Web Sevice precisamos configurar o arquivo WSDL (Web Service Definition Language). O framework Axis já faz esse trabalho árduo para gente, mas se caso queiram maiores detalhes dos WSDLs acessem o W3C na URL abaixo:
http://www.w3.org/TR/wsdl#_wsdl
Usando a classe SoapClient abrimos a conexão com o serviço. O método "__cal" serve para chamar um método do Web Service e no seu segundo argumento passamos os paramêtros necessários.
Existem outros comandos para trabalharem com Web Services mas os 2 mostrados acima já servem para a idéia inicial desse artigo, caso vocês queiram saber outros comandos acessem o manual oficial na URL abaixo:
http://br2.php.net/manual/pt_BR/ref.soap.php
Na próxima edição desse tema explicarei como criar Web Services no PHP para prover acesso para outras linguagens (e também pelo PHP).
Sem mais,
Rodrigo.
Aproveitando o assunto, alguem conhece alguma ferramenta para gerar o arquivo WSDL com o php4 ?
Obrigada
Obrigada
29/08/2005 8:37am
(~19 anos atrás)
Sim Leonardo isto vale para a "versão 5", vide o tópico do artigo "PHP5 e Clientes para Web Services - Parte 1". rsrs
Para o php 4 existe tanb o NuSoap(http://dietrich.ganx4.com/nusoap/index.php).
Sem mais, Rodrigo.
Para o php 4 existe tanb o NuSoap(http://dietrich.ganx4.com/nusoap/index.php).
Sem mais, Rodrigo.
24/08/2005 5:37pm
(~19 anos atrás)
Lembrando que isso tudo é no PHP 5 né?
Eu usei uma classe do PEAR (http://pear.php.net), para PHP 4, no projeto CEPHP (http://cep.maneh.org), e fiz tanto cliente, como servidor em PHP mesmo. E inclusive já acessei o servidor (em php) usando Ruby, Java e até ASP. (:
Vale dar uma olhada para quem não tem como usar o PHP 5 ainda. (;
Eu usei uma classe do PEAR (http://pear.php.net), para PHP 4, no projeto CEPHP (http://cep.maneh.org), e fiz tanto cliente, como servidor em PHP mesmo. E inclusive já acessei o servidor (em php) usando Ruby, Java e até ASP. (:
Vale dar uma olhada para quem não tem como usar o PHP 5 ainda. (;
24/08/2005 12:24pm
(~19 anos atrás)
não sei como enviar XML pra esse WEBSERVICE, a fim de tratar os dados.