doo1010 0 Denunciar post Postado Dezembro 23, 2014 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) "655931croacia-2014-11-18-16-42-432014-12-02 06:24:582014-12-02 06:24:58croaciaNA 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
William Bruno 1501 Denunciar post Postado Dezembro 23, 2014 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
doo1010 0 Denunciar post Postado Dezembro 23, 2014 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
William Bruno 1501 Denunciar post Postado Dezembro 23, 2014 $xml = simplexml_load_string($result); var_dump($xml); Compartilhar este post Link para o post Compartilhar em outros sites
doo1010 0 Denunciar post Postado Dezembro 23, 2014 Me retornou erro: Warning: simplexml_load_file() expects parameter 1 to be a valid path, array given Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Dezembro 23, 2014 é _string, malz.. eu editei mas vc viu muito rápido. :lol: Compartilhar este post Link para o post Compartilhar em outros sites
doo1010 0 Denunciar post Postado Dezembro 23, 2014 Retornou um erro parecido: Warning: simplexml_load_string() expects parameter 1 to be string, array given Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Dezembro 23, 2014 da um var_dump($result) e posta aqui Compartilhar este post Link para o post Compartilhar em outros sites
doo1010 0 Denunciar post Postado Dezembro 23, 2014 array(3) {["s-gensym244"]=>string(12) ""["s-gensym246"]=>string(257) "655931croacia-2014-11-18-16-42-432014-12-02 06:24:582014-12-02 06:24:58croaciaNA"["s-gensym248"]=>string(13) ""} Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Dezembro 23, 2014 uê cara, já tá em array teu xml.. acessa o array agora. Compartilhar este post Link para o post Compartilhar em outros sites
doo1010 0 Denunciar post Postado Dezembro 23, 2014 Acessar qual array? Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Dezembro 23, 2014 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
doo1010 0 Denunciar post Postado Dezembro 23, 2014 Notice: Undefined index: s-gensym246 Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Dezembro 23, 2014 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
doo1010 0 Denunciar post Postado Dezembro 23, 2014 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
William Bruno 1501 Denunciar post Postado Dezembro 23, 2014 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
doo1010 0 Denunciar post Postado Dezembro 23, 2014 Warning: simplexml_load_string(): Entity: line 2: parser error : Premature end of data in tag COMPUTERS line 1 Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Dezembro 23, 2014 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
doo1010 0 Denunciar post Postado Dezembro 24, 2014 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
William Bruno 1501 Denunciar post Postado Dezembro 24, 2014 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