segunda-feira, 19 de maio de 2008

Web Service em PHP

Bem primeiramente vamos ver o conceito sobre Web Services:
"Web Services são serviços disponibilizados pela internet por meio de um conjunto de tecnologias independentes de plataforma que permitem interoperabilidade entre aplicações por meio de padrões abertos e conhecidos como XML e SOAP. Com a interoperabilidade provida pelos Web Services torna possível agregar e e publicar dinamicamente aplicações. Web Services permitem que tecnologias de diferentes plataformas acionem serviços e se comuniquem umas com as outras."

De uma forma simples em um Web Service, você tem que ter uma aplicação que será a servidora do Web Service ou a aplicação que tem a implementação do Web Service e as outras aplicações que utilizam esse Web Service são aplicações cliente, essas aplicações chamam as funções do Web Service servidor.

Exemplo: Sua empresa desenvolve lojas virtuais em php e todas as vezes que você vai implantar o sistema em um novo cliente, tem que importar aquela tabela gigante de cep que o correio vende e se dá algum problema em algum cep de algum cliente você tem que ir na tabela cep daquele cliente e verificar o problema ou se você tem atualizar a tabela vai ter que atualizar essa tabela em todos os clientes. Que increnca hein!
Nesse caso poderia ser pensado em se criar um web service para centralizar essa tabela de cep. Mas como?

Vou mostrar um exemplo de como utilizar um web service para este caso:
Primeiramente você tem que implementar as funções de requisição do web service ou a aplicação que será a servidora desse Web Service.
Primeiramente vamos usar a classe NuSoap um toolkit para facilitar a implementação de Web Services. Lembrando que o php tem classes nativas para se implementar Web Services, em outra oportunidade eu posto aqui como fazer :).

Segue o link para baixar a classe nusoap.

Chega de conversa e vamos ao código:

A aplicação Web Service servidora, server.php:



<?php
//carrega a classe nusoap e seus componentes
include('nusoap.php');

//cria instância classe soap_server
$objServer = new soap_server();

//registra as funções do Web Service
objServer->register('getLocalidade');
$objServer->register('getRua');
$objServer->register('getBairro');
$objServer->register('getCidade');
$objServer->register('getEstado');

//retorna o local
function getLocalidade( $strCep )
{
//instância a classe cep que faz as transações para
//verificar o cep
$objCep = new Cep($strCep );
$strLocal = $objCep->pesqLocalidade();
return $strLocal;
}

//retorna a rua
function getRua( $strCep )
{
//instância a classe cep que faz as transações para
//verificar o cep
$objCep = new Cep($strCep );
$objCep->pesqLocalidade();
return $objCep->rua;
}

//retorna o bairro
function getBairro( $strCep )
{
//instância a classe cep que faz as transações para
//verificar o cep
$objCep = new Cep($strCep );
$objCep->pesqLocalidade();
return $objCep->bairro;
}

//retorna a cidade
function getCidade( $strCEP )
{
//instância a classe cep que faz as transações para
//verificar o cep
$objCep = new Cep($strCep);
$objCep->pesqLocalidade();
return $objCep->cidade;
}

//retorna o estado
function getEstado( $strCep )
{
//instância a classe cep que faz as transações para
//verificar o cep
$objCep = new Cep($strCep);
$objCep->pesqLocalidade();
return $objCep->estado;
}

//requisição para uso do serviço
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$objServer->service($HTTP_RAW_POST_DATA);
?>



A aplicação Web Service cliente, cliente.php:



<?php
//carrega a classe nusoap e seus componentes
include('nusoap.php');

//cria instância classe soapclient
//parâmetro a URL da página do web service
$objSoapClient = new soapclient('http://www.nomesite.com.br/web-
service-cep.php');

//chama a função getLocalidade que retorna o nome da localidade
//da pessoa e passa o número do cep como parâmetro para a função
$local = $objSoapClient->call('getLocalidade', array($cep));

//chama a função getRua que retorna o nome da rua da pessoa e
//passa o número do cep como parâmetro para a função
$strRua = $objSoapClient->call('getRua', array($strCep));
?>


E isso aí pessoal!
Abraços.

Nenhum comentário:

Postar um comentário