0

Consumindo Web Services em ASP.NET com SOAP utilizando Cache

criado por Cesar Rodrigo Bagatoli em 18/09/2006 4:30am
Bem, com a classe pronta agora fica fácil consumir o WS com cache, pois o tratamento do cache já está implementado na classe da página anterior.

<?php
include_once('wsdl.class.php');

$wsdl = new TWsdl('/nomeWS.asmx?WSDL');
$wsdl->setMetodo('metodoDoWS');
$wsdl->addParam('pParametro 1', 'valor');
$wsdl->addParam('pParametro 2', 'valor');
//ADICIONE QUANDOS PARAMETROS FOREM NECESSÁRIOS, OU NENHUM CASA NÃO TENHA

$res = $wsdl->getResult(); //$res CONTEM O OBJETO RETORNADO PELO WS
$res = $res->metodoDoWSResult; //COLOCA O OBJETO DE RESULTADO DO WS - APENAS UM ATALHO, PODE NÃO SER FEITO... 

$erro = $res->Erro->Codigo; //OS WS QUE TRABALHO SEMPRE CONTÉM UM PARAMETRO 'Erro' QUE RETORNA UM CODIGO DE ERRO CASO HAJA
if($erro != 0) {
    $erroDesc = $res->Erro->Mensagem;
    $erroDesc = str_replace("\"", "'", $erroDesc);
    $erroDesc = str_replace("\n", "\\n", $erroDesc);
    echo "<script>alert(\"#".$erro."\\n".$erroDesc."\");</script>";
}
else {
    $qtde = count($res->Resultado->ArrayDeObjetosDoResultado);
    
    for($i = 0; $i < $qtde; $i++) {
        if($qtde == 1) {
            $campo1 = $res->Resultado->ArrayDeObjetosDoResultado->Campo1;
            $campo2 = $res->Resultado->ArrayDeObjetosDoResultado->Campo2;
        }
        else {
            $campo1 = $res->Resultado->ArrayDeObjetosDoResultado[$i]->Campo1;
            $campo2 = $res->Resultado->ArrayDeObjetosDoResultado[$i]->Campo2;
        }
        //ESTE IF EXISTE PQ SE TEM SOMENTE 1 RESULTADO O WS RETORNA UM OBJETO, SE TIVER MAIS ELE ME RETORNA UM ARRAY DE OBJETOS
        
        //AGORA VC FAZ O QUE QUISER AQUI COM O RESULTADO
    }
}
?>

E abaixo vai a estrutura do resultado de um WS meu para melhor entendimento:

stdClass Object
(
    [metodoDoWSResult] => stdClass Object
        (
            [Erro] => stdClass Object
                (
                    [Codigo] => 0
                )

            [Resultado] => stdClass Object
                (
                    [ArrayDeObjetosDoResultado] => stdClass Object
                        (
                            [Campo1] => 'valor'
                            [Campo2] => 'valor'
                        )

                )

        )

)

Comentários:

Nenhum comentário foi enviado ainda.

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)