Ir para conteúdo

POWERED BY:

Arquivado

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

doo1010

Imprimir requisição XML

Recommended Posts

Olá,

 

Estou com dificuldades ao consumir corretamente um webservice.

 

Consigo enviar uma requisição ao webservice ($result = $client->get_computers_V1($request);) e o mesmo me retorna as informações. Até aí tudo bem, o problema é mostrar a reposta dessa requisição.

 

A requisição me retorna um XML:

 

<COMPUTERS>
<COMPUTER>
<CHECKSUM>65593</CHECKSUM>
<DATABASEID>1</DATABASEID>
<DEVICEID>croacia-2014-11-18-16-42-43</DEVICEID>
<LASTCOME>2014-12-02 06:24:58</LASTCOME>
<LASTDATE>2014-12-02 06:24:58</LASTDATE>
<NAME>croacia</NAME>
<TAG>NA</TAG>
</COMPUTER>
</COMPUTERS>

 

Se imprimo a var_dump($result) a resposta sai desorganizada:

 

["s-gensym1370"]=>
string(257) "
65593
1
croacia-2014-11-18-16-42-43
2014-12-02 06:24:58
2014-12-02 06:24:58
croacia
NA

 

Alguém sabe como "quebrar" esta variável ou imprimir a requisição sem as tags?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O teu browser deve estar escondendo as tags, veja no código fonte do browser elas.

 

Com a lib simple_xml vc consegue parsear e transformar essa string xml em objeto para manipular e acessar nós específicos

 

http://php.net/manual/en/book.simplexml.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Willian pela resposta,

 

Já verifiquei meu fonte e lá tem o xml, ja verifiquei também esta lib simple_xml mas não consigo sucesso.

 

Não sei como usar esse XML gerado pelo response.

Compartilhar este post


Link para o post
Compartilhar em outros sites

$xml = simplexml_load_string($result);

var_dump($xml);

Compartilhar este post


Link para o post
Compartilhar em outros sites

é _string, malz.. eu editei mas vc viu muito rápido. :lol:

Compartilhar este post


Link para o post
Compartilhar em outros sites

da um var_dump($result) e posta aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

array(3) {
["s-gensym244"]=>
string(12) "
"
["s-gensym246"]=>
string(257) "
65593
1
croacia-2014-11-18-16-42-43
2014-12-02 06:24:58
2014-12-02 06:24:58
croacia
NA

"
["s-gensym248"]=>
string(13) "
"
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

uê cara, já tá em array teu xml.. acessa o array agora.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah, acho q entendi.. tá ocultando as tags..

 

faz o seguinte:

$xml = simplexml_load_string($result['s-gensym246']);
var_dump($xml);
quando vc postar o resultado dos var_dump(), pega do fonte do browser, para sabermos exatamente oq é.

Compartilhar este post


Link para o post
Compartilhar em outros sites

essas chaves são aleatórias, ou se alteram de tempos em tempos ?

 

Posta o resultado do var_dump($result), pegando do fonte do browser.

Compartilhar este post


Link para o post
Compartilhar em outros sites

As chaves mudam a cada atualização


array(3) { ["s-gensym1306"]=> string(12) "<COMPUTERS> " ["s-gensym1308"]=> string(257) "<COMPUTER> <CHECKSUM>65593</CHECKSUM> <DATABASEID>1</DATABASEID> <DEVICEID>croacia-2014-11-18-16-42-43</DEVICEID> <LASTCOME>2014-12-02 06:24:58</LASTCOME> <LASTDATE>2014-12-02 06:24:58</LASTDATE> <NAME>croacia</NAME> <TAG>NA</TAG> </COMPUTER> " ["s-gensym1310"]=> string(13) "</COMPUTERS> " }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, já que vc precisa de algo dinâmico, o faça:

 

foreach($result AS $each) {
    $xml = simplexml_load_string($each);
    var_dump($xml); //agora vc faz o que quer, com cada um deles
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum.. de onde vem essa variavel $result ?

O xml já tá quebrado pela metade nela.

Muito estranho.. tenta assim:

 

$str = implode($result);
$xml = simplexml_load_string($str);
var_dump($xml); //agora você faz o que quer com esse objeto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu faço a requisição:

$request = '
<REQUEST>
<ENGINE>FIRST</ENGINE>
<ASKING_FOR>META</ASKING_FOR>
<CHECKSUM>1</CHECKSUM>
<OFFSET>0</OFFSET>
<WANTED>1</WANTED>
<ID>'.$var.'</ID>
</REQUEST>';
depois passo a variável como parâmetro para esse método do webservice:
$result = $client->get_computers_V1($request);
Esse novo código que você passo me retornou:
object(SimpleXMLElement)#578 (1) { ["COMPUTER"]=> object(SimpleXMLElement)#579 (7) { ["CHECKSUM"]=> string(5) "65593" ["DATABASEID"]=> string(1) "1" ["DEVICEID"]=> string(27) "croacia-2014-11-18-16-42-43" ["LASTCOME"]=> string(19) "2014-12-02 06:24:58" ["LASTDATE"]=> string(19) "2014-12-02 06:24:58" ["NAME"]=> string(7) "croacia" ["TAG"]=> string(2) "NA" } }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pronto, tá feito.

 

$str = implode($result);
$xml = simplexml_load_string($str);

echo $xml->COMPUTER->DEVICEID; //croacia-2014-11-18-16-42-43


var_dump($xml); //agora você faz o que quer com esse objeto

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.