0

PHP5 e Clientes para Web Services - Parte 1

criado por Rodrigo Rodrigues em 24/08/2005 12:28am
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:

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.

Comentários:

Mostrando 1 - 6 de 6 comentários
aass silva disse:
gostaria de usar tudo isso num servidor com bco de dados mysql5.0, no linux.
não sei como enviar XML pra esse WEBSERVICE, a fim de tratar os dados.

09/11/2007 10:04am (~17 anos atrás)

,
28/09/2005 12:02am (~19 anos atrás)

Oi Claudia, acesse http://www.jool.nl/new/

Sem mais, Rodrigo.
30/08/2005 8:06pm (~19 anos atrás)

Aproveitando o assunto, alguem conhece alguma ferramenta para gerar o arquivo WSDL com o php4 ?

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.
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. (;
24/08/2005 12:24pm (~19 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)