quarta-feira, 11 de junho de 2008

Cliente de Webservice em PHP

Olá,

Tenho colocado posts (muito) raramente aqui mas, apesar disso, alguns que coloquei me foram úteis depois para repetir alguma instalação, configuração, etc. Assim, esse post se destina a descrever a configuração de um servidor web com PHP capaz de rodar aplicações que acessam webservices.

A forma mais fácil de rodar aplicações PHP era, até então, a instalação do pacote EasyPHP, disponível para download em http://sourceforge.net/project/downloading.php?groupname=quickeasyphp&filename=EasyPHP-2.0b1-setup.exe&use_mirror=ufpr. Porém, após fazer essa instalação numa máquina rodando Windows Vista Business, nenhuma página PHP era apresentada.

A próxima opção foi instalar um servidor Apache e PHP "manualmente". Para resumir os passos, há um tutorial muito útil a respeito na página http://www.php-mysql-tutorial.com/install-apache-php-mysql.php.

Faça o download do instalador do Apache em http://httpd.apache.org/. Siga as instruçoes de instalação do tutorial.

Teste 1: Após a instação do Apache, digite http://localhost no seu browser. Deve aparecer uma tela com a frase It Works! É sinal de que o Apache por si só está funcionando.

Depois de instalar o Apache e fazer o que está descrito no tutorial para instalar o PHP, misteriosamente o PHP ainda não funcionava. Nesse ponto, eu e a Cris perdemos várias horas tentando fazer a configuração. Aqui vai um resumo de passos que diferem do tutorial por causa da versão do PHP e do Apache.

Obs: No download do PHP há opções para usar o instalador ou descompactar o .zip. Não consegui fazer funcionar com o instalador. Então, prefira o .zip.

Após descompactar o pacote, acesse o arquivo httpd.conf na pasta /conf da instalação do Apache. Prefira um path name sem espaços para a instalação do Apache. Algo como c:\apache é simples e funcional.

Mude as seguintes diretivas para:

DocumentRoot "C:/www"


DirectoryIndex index.html index.htm index.php


Adicione as linhas abaixo no final do arquivo ao invés das sugeridas no tutorial:

LoadModule php5_module php/php5apache2_2.dll
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

Teste 2: Crie um arquivo chamado teste.php na pasta c:\www com o seguinte conteúdo:

phpinfo();
?>

Reinicie o Apache. Após, digite no seu browser http://localhost/teste.php. Deverá aparecer uma página como a descrita no tutorial. Se não aparecer, revise todas as configurações dos arquivos httpd.conf e php.ini. Lembre-se de reiniciar o serviço do Apache a cada modificação.

Quando funcionar, é sinal que o Apache + PHP já estão funcionando. Agora, só falta ser cliente de Webservices.

Edite o arquivo php.ini (que vc copiou para a pasta c:\Windows conforme manda o tutorial) para ajustar as seguintes diretivas:

short_open_tag = On
include_path=".;c:\apache\php\pear"
extension=php_soap.dll

Após a instalação do PHP, há um arquivo chamado go-pear.bat na pasta de instalação do PHP. Execute esse arquivo para a instalação da ferramenta Pear que é usada para acrescentar pacotes no PHP.

Siga o roteiro que aparece na tela. Após concluir esse passo, instale a extensão HTTP Request, através dos comandos:

pear download HTTP_request
pear install HTTP_request

Para instalar o pacote SOAP (necessário para a utilização de webservices) é necessário fazer o download manual do pacote. Isso pode ser feito em http://pear.php.net/package/SOAP.

Após o download, descompacte o pacote, renomeie a pasta p/ SOAP e copie para dentro da pasta /php/pear.

Reinicie o serviço do Apache.

Crie um arquivo chamado web_teste.php na pasta c:\www com o seguinte conteúdo:

$pesoIni = "1000";
echo "Peso: $pesoIni gramas";
require_once('SOAP/Client.php');
$wsdl = new SOAP_WSDL('http://www.webservicex.net/convertMetricWeight.asmx?wsdl');
$client = $wsdl->getProxy();
$ret = $client->ChangeMetricWeightUnit($pesoIni,'gram','kilogram');
echo "Peso $ret kilogramas";
?>

Digite http://localhost/web_teste.php

Se aparecer 1000 gramas convertidos para 1 kilograma, tudo está funcionando como deveria.

Links úteis:

http://www.linhadecodigo.com.br/Artigo.aspx?id=756
http://pear.php.net/package/SOAP
http://httpd.apache.org/
http://www.php.net

Até a próxima!

Nenhum comentário: