Web Service em PHP
Tuesday, November 21st, 2006Como cada vez mais surgem novos sistemas de informação de diversas linguagens de programação, surgiram a necessidade de integração de alguns sistemas, mas como desenvolver uma ferramenta que entenda todas linguagens e que seja de fácil acesso? Foi criado o WEB SERVICE que utiliza o protocolo SOAP através do XML para enviar as informações de um sistema � outro. Anteriormente ao XML era usado comandos via “socket” que nada mais é do que um software que fica escutando uma determinada porta do computador, porém é um processo muito trabalhoso!
Abaixo temos um exemplo de um Web Service em php utilizando a classe NUSOAP. Utilizar essa classe é realmente simples!
Então vamos lá:
O primeiro exemplo é o servidor que irá enviar as informações para o cliente. O servidor agora, somente tem uma ação que é retornar um nome de usuário, na situação abaixo é “Andrey Pedro Lefkum”, mas isso pode ser dinâmico, sendo retornado do banco de dados.
Arquivo: soap.php
<?php
require_once(”nusoap.php”);
function retornaUsuarios($parametro) {
$nome = “Andrey Pedro Lefkum”;
return $nome;
}
$objetoSoapServer = new soap_server();
$objetoSoapServer->configureWSDL(’SMSSoap’,'urn:SMSSoap’);
/* Essa funcao nao faz nada */
$objetoSoapServer->register(’retornaUsuarios’
,array(’base’ => ‘xsd:string’)
,array(’return’ => ‘xsd:string’)
,’urn:SMSSoap’
,’urn:SMSSoap#retornaUsuarios’
);
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ”;
$objetoSoapServer->service($HTTP_RAW_POST_DATA);
?>
Esse segundo exemplo é a parte que faz a requisição ao servidor, nesse caso ele é o cliente.
O cliente diz qual será o servidor, e qual a função do servidor que ele quer que retorne, nesse caso é a retornaUsuarios.
Caso não aconteça nenhum erro ele retorna o nome do usuário.
Arquivo: nusoapCliente.php
<?php
require_once(”nusoap.php”);
$parametros = array(’usuarioCodigo’ => 5);
$clienteSoap = new soapclient(”http://localhost/webservice/soap.php”);
$resultado = $clienteSoap->call(’retornaUsuarios’,$parametros);
if($clienteSoap->fault) {
echo “Erro ao acessar o WEBSERVICE<br />Erro: “.$clienteSoap->faultstring;
}
else {
echo “Nome Usu疵io: “.$resultado;
}
?>
Lembrando que o cliente poderia ser feito em qualquer outra linguagem, como JAVA, ASP enfim…
Referências Bibliográficas:
Claudimir Zavalik, Gulilherme Lacerda, José Palazzo M. de Oliveira
www.inf.ufrgs.br/~palazzo/OAI/04%20Software%20Livre%20-%20Web%20Serv.pdf
Mauricio Reckziegel
http://www.imasters.com.br/artigo/4379/webservices/protocolo_de_transporte_padrao_-_soap/
Mauricio Reckziegel
http://www.imasters.com.br/artigo/4422/webservices/descrevendo_um_web_service_-_wsdl/