Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fernando José

PHP: SoapClient - WSDL

Recommended Posts

Pessoal,

 

Estou tentando popular um combobox com o resultado de uma consulta no webservice do meu cliente. Preciso do ID da Cidade e do nome da cidade.

 

Fiz o seguinte código:

 

<?php
$client = new SoapClient('http://localhost/pesquisa/pesquisaimovel.asmx?WSDL');
$parameters = array('estado_id' => '1');
$resposta = $client->Retorna_Cidades($parameters);

echo "<pre>";
print_r($resposta);
exit();
?>

 

Olha como ele está retornando:

stdClass Object
(
   [Retorna_CidadesResult] => stdClass Object
       (
           [schema] => 
           [any] => 1SPSão Paulo5Barueri441SPSão Paulo2Mogi das Cruzes001SPSão Paulo4Santana de Parnaíba111SPSão Paulo3São Bernardo do Campo221SPSão Paulo1São Paulo271485
       )

)

 

Como vou fazer para separar os cidades?

 

Alguém poderia me ajudar?

 

Obrigado

 

Galera,

 

Alguem tem alguma dica?

 

Não teria que estar retornando um array para mim ao inves de tudo em uma string?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nunca usei essa classe, sempre preferi pacotes PEAR ou ZF. Mas pela documentação seria algo mais ou menos assim...:

 

$client = new SoapClient('http://localhost/pesquisa/pesquisaimovel.asmx?WSDL');
$parameters = array('estado_id' => '1');
$retorno =  $client->Retorna_Cidades($parameters);
echo $retorno->Retorna_CidadesResult;

 

 

Mesmo assim vai retornar algo como

1SPSão Paulo5Barueri441SPSão Paulo2Mogi das Cruzes001SPSão Paulo4Santana de Parnaíba111SPSão Paulo3São Bernardo do Campo221SPSão Paulo1São Paulo271485

 

O jeito é usar preg_match para passar tudo para arrays.

 

Número

UF (duas letras maiúsculas)

Estado

Número

Cidade

Número

 

Complicado é que cada registro começa com um número e também termina com um número... só se removesse todas as ocorrências de "1SPSão Paulo" para ficar mais fácil.

 

Lembando que antes tem que dar um jeito nesse problema de codificação dos caracteres.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O pessoal do sistema alterou para gerar o XML.

 

Como faço para percorrer o xml e pegar os dados?

 

stdClass Object
(
   [Retorna_Regioes_stringResult] => <Dados>
 <Regioes>
   <estado_id>1</estado_id>
   <sigla>SP</sigla>
   <descricao>São Paulo</descricao>
   <cidade_id>1</cidade_id>
   <cidade>São Paulo</cidade>
   <cidade_id1>1</cidade_id1>
   <regiao_id>4</regiao_id>
   <regiao>Centro</regiao>
   <ativo>false</ativo>
 </Regioes>
 <Regioes>
   <estado_id>1</estado_id>
   <sigla>SP</sigla>
   <descricao>São Paulo</descricao>
   <cidade_id>1</cidade_id>
   <cidade>São Paulo</cidade>
   <cidade_id1>1</cidade_id1>
   <regiao_id>1</regiao_id>
   <regiao>Grande São Paulo</regiao>
   <ativo>false</ativo>
 </Regioes>
</Dados>
)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Baixe essa classe:

http://www.lalit.org/lab/convert-xml-to-array-in-php-xml2array/

 

 

 


$client = new SoapClient('http://localhost/pesquisa/pesquisaimovel.asmx?WSDL');
$parameters = array('estado_id' => '1');
$retorno =  $client->Retorna_Cidades($parameters);
$xml = $retorno->Retorna_CidadesResult;



require ("XML2Array.php");


$array = XML2Array::createArray($xml);
echo "<pre>" . print_r($array, true);

 

 

O Array retornado será este:

Array
(
   [Dados] => Array
       (
           [Regioes] => Array
               (
                   [0] => Array
                       (
                           [estado_id] => 1
                           [sigla] => SP
                           [descricao] => São Paulo
                           [cidade_id] => 1
                           [cidade] => São Paulo
                           [cidade_id1] => 1
                           [regiao_id] => 4
                           [regiao] => Centro
                           [ativo] => false
                       )

                   [1] => Array
                       (
                           [estado_id] => 1
                           [sigla] => SP
                           [descricao] => São Paulo
                           [cidade_id] => 1
                           [cidade] => São Paulo
                           [cidade_id1] => 1
                           [regiao_id] => 1
                           [regiao] => Grande São Paulo
                           [ativo] => false
                       )

               )

       )

)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Baixe essa classe:

http://www.lalit.org/lab/convert-xml-to-array-in-php-xml2array/

 

 

 


$client = new SoapClient('http://localhost/pesquisa/pesquisaimovel.asmx?WSDL');
$parameters = array('estado_id' => '1');
$retorno =  $client->Retorna_Cidades($parameters);
$xml = $retorno->Retorna_CidadesResult;



require ("XML2Array.php");


$array = XML2Array::createArray($xml);
echo "<pre>" . print_r($array, true);

 

 

O Array retornado será este:

Array
(
   [Dados] => Array
       (
           [Regioes] => Array
               (
                   [0] => Array
                       (
                           [estado_id] => 1
                           [sigla] => SP
                           [descricao] => São Paulo
                           [cidade_id] => 1
                           [cidade] => São Paulo
                           [cidade_id1] => 1
                           [regiao_id] => 4
                           [regiao] => Centro
                           [ativo] => false
                       )

                   [1] => Array
                       (
                           [estado_id] => 1
                           [sigla] => SP
                           [descricao] => São Paulo
                           [cidade_id] => 1
                           [cidade] => São Paulo
                           [cidade_id1] => 1
                           [regiao_id] => 1
                           [regiao] => Grande São Paulo
                           [ativo] => false
                       )

               )

       )

)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.