PHP Web Services - Encontrando Erros
Apenas para definição e apresentação:
Web service é uma solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes. Com esta tecnologia é possível que novas aplicações possam interagir com aquelas que já existem e que sistemas desenvolvidos em plataformas diferentes sejam compatíveis. Os Web services são componentes que permitem � s aplicações enviar e receber dados em formato XML. Cada aplicação pode ter a sua própria “linguagem”, que é traduzida para uma linguagem universal, o formato XML.
Qual o problemas dos problemas com erros?
O grande problema quando ocorre um erro, como por exemplo a falta de um “;” no final da linha de código é encontrar o que ocorreu, já que na maioria dos exemplos que encontrei na internet ficam com a página em branco quando ocorre uma situação inesperada como essa. Exemplo:
Serviço
<?php
require_once(”nusoap.php”);
function retornaUsuarios($parametro) {
$nome = “Andrey Pedro Lefkum”;
return $nome;
}
$objetoSoapServer = new soap_server();
$objetoSoapServer->configureWSDL(’SMSSoap’,’urn:SMSSoap’);
/* Registra o serviço para que possa ser encontrado pelo outro sistema que irá acessa-lo */
$objetoSoapServer->register(’retornaUsuarios’);
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ”;
$objetoSoapServer->service($HTTP_RAW_POST_DATA);
?>
Acesso ao Serviço
<?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ário: “.$resultado;
}
?>
Então quando acesso o “Acesso ao serviço” caso falte um “;” no serviço a página fica toda em branco!
O que fazer?
Execute o diretamente o script do serviço “retornaUsuarios” e chame na mesma página a função como o exemplo abaixo:
<?php
require_once(”nusoap.php”);
function retornaUsuarios($parametro) {
$nome = “Andrey Pedro Lefkum”;
return $nome;
}
$objetoSoapServer = new soap_server();
$objetoSoapServer->configureWSDL(’SMSSoap’,’urn:SMSSoap’);
/* Registra o serviço para que possa ser encontrado pelo outro sistema que irá acessa-lo */
$objetoSoapServer->register(’retornaUsuarios’);
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ”;
$objetoSoapServer->service($HTTP_RAW_POST_DATA);
$objeto = retornaUsuarios(1);
echo $objeto->faultstring;
echo $objeto;
?>
Observe o código que está em negrito! Quando executar o script do serviço ele vai auto chama-lo através da primeira linha que está em negrito acima e retornará:
Em caso de erro - Objeto;
Em caso de execução OK - retorna o valor, que no caso acima é “Andrey Pedro Lefkum”.
Caso retorne o valor é simples, basta imprimi-lo na tela, mas quando retornar o objeto?
Observe a segunda linha do código em negrito acima: echo $objeto->faultstring;
Imprime o valor faultstring que está atribuido ao objeto.
Somente quem desenvolver um Web Services, vai saber do que disse acima! =D
Pessoal, caso tenham qualquer dúvida, pode deixar um post que retornarei com certeza, e com toda satisfação e ajudar!
Andrey.
November 19th, 2007 at 11:35 am
Olá Andrey,
Estou iniciando meus estudos em web services e gostaria que me ajudasse. Criei os arquivos como está descrito no seu artigo, mas o web service não está funcionando. Será que isso pode ser algum problema de configuração do php.ini?
abraços
November 19th, 2007 at 1:32 pm
Olá Emanuel!
Se possível me manda o código que verificarei o que pode estar ocorrendo, porém duvido muito que seja no php.ini
Até mais
aguardo sua resposta!
November 20th, 2007 at 5:11 am
Olá Andrey, eu andei olhando e o php.ini está padrão. e o código está igual ao postado. Só alterei o seu nome pelo meu…