Ir para conteúdo

POWERED BY:

Arquivado

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

valdir calixto

[Resolvido] Consumir XML

Recommended Posts

Bom dia, alguém pode me ajudar com a seguinte situação?

 

Tenho um formulário que envia um POST para uma URL, por exemplo http://www.cartaoonline.com.br/consulta.

 

Os dados desse POST, são número da minha conta e o número do pedido que quero consultar.

 

A url http://www.cartaoonline.com.br/consulta, me retorna as informações do pedido em um XML (Dentro da mesma URL), conforme abaixo:

 

 

O documento XML não está associado a estilos. A estrutura do documento é representada abaixo.

 

<result>

<message>OK</message>

<operation>

 

<n_conta>15778110</n_conta>

<n_pedido>187</n_pedido>

<status>C</status>

<status_description>refunded</status_description>

</operation>

</result>

 

O que quero, preciso consumir este xml (Ler).

 

Já tentei usar simplexml, sem sucesso, pois o XML abre dentro da URL http://www.cartaoonline.com.br/consulta.

 

Alguém tem alguma idéia?

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentei porém não vou ter nenhum arquivo com a extensão .xml, nem a url do site usa a extensão .xml

 

Envio o FORM via POST com o número do pedido para a URL: http://www.cartaoonline.com.br/consulta

 

ele me retorna na própria página do endereço acima, sem mudar a url o xml.

 

 

O documento XML não está associado a estilos. A estrutura do documento é representada abaixo.

 

<result>

<message>OK</message>

<operation>

 

<n_conta>15778110</n_conta>

<n_pedido>187</n_pedido>

<status>C</status>

<status_description>refunded</status_description>

</operation>

</result>

Compartilhar este post


Link para o post
Compartilhar em outros sites

@valdir calixto,

 

Os amigos já lhe deram a solução para seu problema nos posts acima. Leia as sugestões dadas e pesquise cada uma delas.

 

Após pesquisar, caso ainda continue tendo problemas, poste seu código aqui e o problema que está tendo bem como mensagens de erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá a todos antes de recorrer ao fórum pesquisei todas as soluções acima já citadas, simpleXml, DomXml.

 

Porém sem sucesso.

 

Todas as soluções acima eu tenho que carregar algo do tipo .xml seja um arquivo ou URL, porém não tenho isso não aplicação, simplismente envio o número da conta e o número do pedido realizado no site. E aplicação me retorna uma estrutura xml, com status do pedido. A url www.xxxx.com.br/consulta - sempre vai ficar neste formado, só alterando o corpo da página com a estrutura padrão do xml.

 

Não achei como meu arquivo lerstatus.php vai ler a url acima (Que vai receber os dados da conta e número do pedido através de um form simples que envia um POST).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Todas as soluções acima eu tenho que carregar algo do tipo .xml seja um arquivo ou URL, porém não tenho isso não aplicação,

 

Poxa amigo,

 

Claro que tem isso ai, afinal, você postou aqui no fórum.

 

1. Faça o post utilizando cURL http://forum.imasters.com.br/public/style_emoticons/default/seta.gif http://php.net/manual/en/book.curl.php

 

<?php
$ch = curl_init();
curl_setopt( $ch , CURLOPT_URL , 'http-~~-//url-do-seu-servico' );
curl_setopt( $ch , CURLOPT_HEADER , 0 );
curl_setopt( $ch , CURLOPT_RETURNTRANSFER , 1 );
curl_setopt( $ch , CURLOPT_POST , 1 );
curl_setopt( $ch , CURLOPT_POSTFIELDS , http_build_query( array(
'campo1' => 'valor 1',
'campo2' => 'valor 2',
'campoN' => 'valor N'
) ) );

$xml = curl_exec( $ch );

curl_close( $ch );

 

2. Com o XML recebido, você utiliza DOM http://forum.imasters.com.br/public/style_emoticons/default/seta.gif http://php.net/manual/en/book.dom.php

 

<?php
//...
$dom = new DOMDocument();
$dom->loadXML( $xml );

$n_conta = $dom->getElementsByTagName( 'n_conta' )->item( 0 )->nodeValue;
// faça o mesmo para os outros campos

 

Como eu disse, os amigos acima já haviam lhe passado a solução completa.

 

Bastava pesquisar um pouquinho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Todas as soluções acima eu tenho que carregar algo do tipo .xml seja um arquivo ou URL, porém não tenho isso não aplicação,

 

Poxa amigo,

 

Claro que tem isso ai, afinal, você postou aqui no fórum.

 

1. Faça o post utilizando cURL :seta: http://php.net/manual/en/book.curl.php

 

<?php
$ch = curl_init();
curl_setopt( $ch , CURLOPT_URL , 'http://url-do-seu-servico' );
curl_setopt( $ch , CURLOPT_HEADER , 0 );
curl_setopt( $ch , CURLOPT_RETURNTRANSFER , 1 );
curl_setopt( $ch , CURLOPT_POST , 1 );
curl_setopt( $ch , CURLOPT_POSTFIELDS , http_build_query( array(
'campo1' => 'valor 1',
'campo2' => 'valor 2',
'campoN' => 'valor N'
) ) );

$xml = curl_exec( $ch );

curl_close( $ch );

 

2. Com o XML recebido, você utiliza DOM :seta: http://php.net/manual/en/book.dom.php

 

<?php
//...
$dom = new DOMDocument();
$dom->loadXML( $xml );

$n_conta = $dom->getElementsByTagName( 'n_conta' )->item( 0 )->nodeValue;
// faça o mesmo para os outros campos

 

Como eu disse, os amigos acima já haviam lhe passado a solução completa.

 

Bastava pesquisar um pouquinho.

 

 

tem o mesmo código mas esta dando o erro 7 do curl -> couldn't connect to host

 

 

$ch = curl_init();
curl_setopt( $ch , CURLOPT_URL , 'http://200.182.98.153:8083/smsIntegrationCenter/rest/get/sendMessage' );
curl_setopt( $ch , CURLOPT_HEADER , 0 );
curl_setopt( $ch , CURLOPT_RETURNTRANSFER , 1 );
curl_setopt( $ch , CURLOPT_POST , 1 );
curl_setopt( $ch , CURLOPT_POSTFIELDS , http_build_query( array(        
							'phone' => $_POST[destinatarioDado],        
							'message' => $mensagem,
							'idProject' => $idProject,        
							'login' => $login,
							'password' => $password,        
							'datSchedule' => '10/12/2010 14:00') ) );

$xml = curl_exec( $ch );

echo "<br/><br/>";
echo curl_error($ch);
echo "<br/><br/>";
echo curl_errno($ch);
echo "<br/><br/>";

curl_close( $ch );

$dom = new DOMDocument();$dom->loadXML( $xml );
$descricao = $dom->getElementsByTagName( 'description' )->item( 0 )->nodeValue;

 

O RETORNO DA PAGINA É O SEGUINTE:

 

Tipo: 1

Mensagem: Olá #dest#, esta notícia foi enviada por #remet#. Acesse o link: http://www.voxage.com.br/newsletter/0910/mat_01.html

Arquivo:

Assunto:

Imagem E-Mail:

Rementente Nome: porco

Rementente Dados: 4391427036

Destinatario Nome: Vinicius

Destinatario Dados: 4391427036

 

 

 

couldn't connect to host

 

7

 

 

Warning: DOMDocument::loadXML() [domdocument.loadxml]: Empty string supplied as input in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\News\sendNews.php on line 61

 

 

 

 

ALGUÉM PODE ME AJUDAR????

 

Todas as soluções acima eu tenho que carregar algo do tipo .xml seja um arquivo ou URL, porém não tenho isso não aplicação,

 

Poxa amigo,

 

Claro que tem isso ai, afinal, você postou aqui no fórum.

 

1. Faça o post utilizando cURL :seta: http://php.net/manual/en/book.curl.php

 

<?php
$ch = curl_init();
curl_setopt( $ch , CURLOPT_URL , 'http://url-do-seu-servico' );
curl_setopt( $ch , CURLOPT_HEADER , 0 );
curl_setopt( $ch , CURLOPT_RETURNTRANSFER , 1 );
curl_setopt( $ch , CURLOPT_POST , 1 );
curl_setopt( $ch , CURLOPT_POSTFIELDS , http_build_query( array(
'campo1' => 'valor 1',
'campo2' => 'valor 2',
'campoN' => 'valor N'
) ) );

$xml = curl_exec( $ch );

curl_close( $ch );

 

2. Com o XML recebido, você utiliza DOM :seta: http://php.net/manual/en/book.dom.php

 

<?php
//...
$dom = new DOMDocument();
$dom->loadXML( $xml );

$n_conta = $dom->getElementsByTagName( 'n_conta' )->item( 0 )->nodeValue;
// faça o mesmo para os outros campos

 

Como eu disse, os amigos acima já haviam lhe passado a solução completa.

 

Bastava pesquisar um pouquinho.

 

 

tem o mesmo código mas esta dando o erro 7 do curl -> couldn't connect to host

 

 

$ch = curl_init();
curl_setopt( $ch , CURLOPT_URL , 'http://200.182.98.153:8083/smsIntegrationCenter/rest/get/sendMessage' );
curl_setopt( $ch , CURLOPT_HEADER , 0 );
curl_setopt( $ch , CURLOPT_RETURNTRANSFER , 1 );
curl_setopt( $ch , CURLOPT_POST , 1 );
curl_setopt( $ch , CURLOPT_POSTFIELDS , http_build_query( array(        
							'phone' => $_POST[destinatarioDado],        
							'message' => $mensagem,
							'idProject' => $idProject,        
							'login' => $login,
							'password' => $password,        
							'datSchedule' => '10/12/2010 14:00') ) );

$xml = curl_exec( $ch );

echo "<br/><br/>";
echo curl_error($ch);
echo "<br/><br/>";
echo curl_errno($ch);
echo "<br/><br/>";

curl_close( $ch );

$dom = new DOMDocument();$dom->loadXML( $xml );
$descricao = $dom->getElementsByTagName( 'description' )->item( 0 )->nodeValue;

 

O RETORNO DA PAGINA É O SEGUINTE:

 

Tipo: 1

Mensagem: Olá #dest#, esta notícia foi enviada por #remet#. Acesse o link: http://www.voxage.com.br/newsletter/0910/mat_01.html

Arquivo:

Assunto:

Imagem E-Mail:

Rementente Nome: porco

Rementente Dados: 4391427036

Destinatario Nome: Vinicius

Destinatario Dados: 4391427036

 

 

 

couldn't connect to host

 

7

 

 

Warning: DOMDocument::loadXML() [domdocument.loadxml]: Empty string supplied as input in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\News\sendNews.php on line 61

 

 

 

 

ALGUÉM PODE ME AJUDAR????

 

 

Esqueçam resolvi com este exemplo mesmo!Obrigado

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.