Consumindo Web Server GeneXus com PHP



Esse exemplo é para fins didáticos e caso você for usar algum Web Server mais complexo sugiro o uso de um Framework PHP.

Primeiro vamos testar o caminho do nosso Web Server no navegador

Identificando os atributos, nome do objeto e método  principal agora já podemos escrever o nosso código PHP.



<?php
//Testa se existe a LIB Soap habilitada no PHP 
if (!extension_loaded("soap")) {
    dl("php_soap.dll");
}
//libera o cache do Soap
ini_set("soap.wsdl_cache_enabled", "0");
//instancia o objeto soap 
$client = new SoapClient("http://localhost/webserver.NetEnvironment/awebserver.aspx?wsdl");
//Cria o parâmetro que é um array associativo de CPF e numero.
$array = array('Cadclientecpf' => 14840960887);
/*O objeto cliente tem o método
(execute) que tem o nosso parâmetro array.*/
$search = $client->Execute($array);
/*caso queira ver o resultado 
em array de um print_r($search);
Temos uma condição se falso mostra mensagem 
se não mostra o resultado. */
if ($search->Empcod->SDTCartaoSescId == 0) {
    echo "Não foi encontrado nenhum registro!";
} else {

    echo 'Nome: ' . $search->Empcod->SDTCartaoSescNome;
    echo '<br/>';
    echo 'CPF: ' . $search->Empcod->SDTCartaoSescCpf;
    echo '<br/>';
    echo 'ID: ' . $search->Empcod->SDTCartaoSescId;
}
?>



Outra forma de identificar itens do Web Server é usando o Software SoapUI 
Basta você abrir o sua URL dentro do SoapUI como mostra na imagem e fazer a sua consulta:



Comentários

  1. Boa noite, tudo bem?
    Peguei o seu exemplo para fazer um teste e chamar um WS em genexus, com o soapui funcionou com a chamada PHP não funcionou.
    Tem alguma ideia do que pode ser?

    Muito obrigado, abraço.

    ResponderExcluir
    Respostas
    1. Boa Noite Eduardo, Desculpa a demora em responder pois fazia tempo que não escrevia no blog. Primeiro você está com o extensão do php_soap.dll ativo no php.ini? se não ative ela. Outra dica que posso te dizer é de um print_r($search); para ver se está chegando algo. E por ultimo veja se você esta passando no método "execute" constantes como array, pois se forem com variáveis é de outro jeito que é feito. qualquer coisa avisa ai abraço!

      Excluir

Postar um comentário