Ir para conteúdo

POWERED BY:

Arquivado

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

Henrique-raptor

Erro na geração de um arquivo xml

Recommended Posts

Bom dia a todos...

 

error_reporting(E_ALL);

$matricula = $_POST["matricula"];//'368994'  Essa é a matricula do titular
$cpf = $_POST["cpf"];//'37001952818'; // Esse é o CPF do titular
$rg =  $_POST["rg"];//'425190146'; // Esse é o RG do titular ou do dependente, no caso, da pessoa que irá fazer o curso
$email = $_POST["email"];//'fgregorio@gmail.com'; // E-mail da pessoa que irá fazer o curso

$str = file_get_contents(
	"http://200.182.243.2:8091/integracaoceaesp/api.php/consultasocio/?"
	."matricula={$matricula}"
	."&cpf={$cpf}"
	."&rg={$rg}"
	."&email={$email}"
);


$xml = new SimpleXMLElement($str);

 

Tenho um formulario onde estou informando os dados para realizar a consulta. Local esta funcionando normalmente, mas quando eu coloco no servidor online fica acusando erro nessa linha.

A mensagem de erro é essa:

 

"Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /home/raptorde/public_html/xml/teste-doc.php:23 Stack trace: #0 /home/raptorde/public_html/xml/teste-doc.php(23): SimpleXMLElement->__construct('') #1 {main} thrown in /home/raptorde/public_html/xml/teste-doc.php on line 23"

 

$xml = new SimpleXMLElement($str);

 

Alguem pode me ajudar nessa ai...

 

FLWSS

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use DOMDocument

<?php

$matricula = '368994';
$cpf = '37001952818';
$rg = '425190146';
$email = 'fgregorio@gmail.com';

$url = sprintf( 
	'http://200.182.243.2:8091/integracaoceaesp/api.php/consultasocio/?matricula=%s&cpf=%s&rg=%s&email=%s', 
	$matricula, $cpf, $rg, $email
);
echo $url;
$DOMDocument = new DOMDocument( '1.0', 'UTF-8' );
$DOMDocument->preserveWhiteSpace = false;
$DOMDocument->formatOutput = true;
$DOMDocument->load( $url );

var_dump( $DOMDocument->saveXML( ) );

 

 

Saída

<?xml version="1.0"?>
<retorno>
  <status>OK</status>
  <mensagem>Consulta realizada com sucesso</mensagem>
  <url_redirecionamento>http://www.comerciarios.org.br/</url_redirecionamento>
  <socio>
    <status_associacao>REGULAR</status_associacao>
    <nome>DENISE+LIMA+RODRIGUES</nome>
  </socio>
  <dependente>
    <nome>ADRIO+LIMA+MACIEL</nome>
  </dependente>
</retorno>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia...

 

Eu acho que dessa forma vai funcionar, mas to apanhando aqui...

 

Porque preciso pegar esse dado "<status_associacao>REGULAR</status_associacao>" para fazer uma comparação em outra pagina, e não to conseguindo pegar esse dado...

 

Da uma força ai.

 

flwss

Compartilhar este post


Link para o post
Compartilhar em outros sites
http://200.182.243.2:8091/integracaoceaesp/api.php/consultasocio/?matricula=368994&cpf=37001952818&rg=425190146&email=fgregorio@gmail.com
Warning: DOMDocument::load() [domdocument.load]: Document is empty in http://200.182.243.2:8091/integracaoceaesp/api.php/consultasocio/?matricula=368994&cpf=37001952818&rg=425190146&email=fgregorio@gmail.com, line: 1 in /home/raptorde/public_html/xml/teste-doc.php on line 17

Warning: DOMDocument::load() [domdocument.load]: Start tag expected, '<' not found in http://200.182.243.2:8091/integracaoceaesp/api.php/consultasocio/?matricula=368994&cpf=37001952818&rg=425190146&email=fgregorio@gmail.com, line: 1 in /home/raptorde/public_html/xml/teste-doc.php on line 17
string(39) " "

 

Carlos o erro que ta apresentando... A url ta indo correta... colei ela no navegador foi beleza... e é so colocar ela online que nao funciona.

 

localmente ta tudo funcionado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testei agora e está funcionando corretamente.

 

Script

<?php

$matricula = '368994';
$cpf = '37001952818';
$rg = '425190146';
$email = 'fgregorio@gmail.com';

$url = sprintf( 
	'http://200.182.243.2:8091/integracaoceaesp/api.php/consultasocio/?matricula=%s&cpf=%s&rg=%s&email=%s', 
	$matricula, $cpf, $rg, $email
);

$DOMDocument = new DOMDocument( '1.0', 'UTF-8' );
$DOMDocument->preserveWhiteSpace = false;
$DOMDocument->formatOutput = true;
$DOMDocument->load( $url );

echo $DOMDocument->getElementsByTagName( 'status_associacao' )->item( 0 )->nodeValue;

 

Saída

REGULAR

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php

$matricula = $_POST["matricula"];//'368994'  Essa é a matricula do titular
$cpf = $_POST["cpf"];//'37001952818'; // Esse é o CPF do titular
$rg =  $_POST["rg"];//'425190146'; // Esse é o RG do titular ou do dependente, no caso, da pessoa que irá fazer o curso
$email = $_POST["email"];//'fgregorio@gmail.com'; // E-mail da pessoa que irá fazer o curso

$url = sprintf("http://200.182.243.2:8091/integracaoceaesp/api.php/consultasocio/?matricula=%s&cpf=%s&rg=%s&email=%s", $matricula, $cpf, $rg, $email);

$DOMDocument = new DOMDocument("1.0", "UTF-8");
$DOMDocument->preserveWhiteSpace = false;
$DOMDocument->formatOutput = true;
$DOMDocument->load($url);

//var_dump($DOMDocument->saveXML( ));
$status = $DOMDocument->getElementsByTagName("status_associacao")->item( 0 )->nodeValue;
	header("Location: status.php?sta=$status");

?>

 

essa parte ta OK...

 

 

<?php
$status = $_GET["sta"];

if($status == "REGULAR"){
	echo "valor de 50%";
	}else{
		echo "valor de 100%";
}
?>

 

 

Ai vem o seguinte... preciso passar o valor que fica dentro de "status_associacao" nesse caso seria REGULAR.

 

Vai ser passado via GET, estou fazendo do modo correto?? Passando atraves do header?

 

Na URL ela ta indo assim: http://www.raptordesign.com.br/xml/status.php?sta=

 

sem nenhum dado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente estar vazia mesmo...

 

Carlos tem que fazer alguma configuração especifica a ser feita no servidor ou algo do tipo, ainda continuo com esse erro, por isso q variavel ta vazia.

 

Copiei o codigo que vc disse estar funcionando ai, mas ainda persiste o erro.

 

o Erro:

 

ta retornando ela vazia me parece...

http://200.182.243.2:8091/integracaoceaesp/api.php/consultasocio/?matricula=368994&cpf=37001952818&rg=425190146&email=fgregorio@gmail.com
Warning: DOMDocument::load() [domdocument.load]: Document is empty in http://200.182.243.2:8091/integracaoceaesp/api.php/consultasocio/?matricula=368994&cpf=37001952818&rg=425190146&email=fgregorio@gmail.com, line: 1 in /home/raptorde/public_html/xml/teste-doc.php on line 17

Warning: DOMDocument::load() [domdocument.load]: Start tag expected, '<' not found in http://200.182.243.2:8091/integracaoceaesp/api.php/consultasocio/?matricula=368994&cpf=37001952818&rg=425190146&email=fgregorio@gmail.com, line: 1 in /home/raptorde/public_html/xml/teste-doc.php on line 17
string(39) " "


No servidor local ele ta funcionando... Blz

 

So colocar online que estraga tudo, vai entender isso...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Versão utilizando cURL

 

$matricula = '368994';
$cpf = '37001952818';
$rg = '425190146';
$email = 'fgregorio@gmail.com';

$url = sprintf( 
	'http://200.182.243.2:8091/integracaoceaesp/api.php/consultasocio/?matricula=%s&cpf=%s&rg=%s&email=%s', 
	$matricula, $cpf, $rg, $email
);

$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_HEADER, false );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_BINARYTRANSFER, true );
$xml = curl_exec( $ch );
curl_close( $ch );

$DOMDocument = new DOMDocument( '1.0', 'UTF-8' );
$DOMDocument->preserveWhiteSpace = false;
$DOMDocument->formatOutput = true;
$DOMDocument->loadXML( $xml );

echo $DOMDocument->getElementsByTagName( 'status_associacao' )->item( 0 )->nodeValue;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara num consigo fazer isso funcionar de jeito nenhum nenhum

<?php

$matricula = $_POST["matricula"];//'368994'  Essa é a matricula do titular
$cpf = $_POST["cpf"];//'37001952818'; // Esse é o CPF do titular
$rg =  $_POST["rg"];//'425190146'; // Esse é o RG do titular ou do dependente, no caso, da pessoa que irá fazer o curso
$email = $_POST["email"];//'fgregorio@gmail.com'; // E-mail da pessoa que irá fazer o curso

$url = sprintf( 
	'http://200.182.243.2:8091/integracaoceaesp/api.php/consultasocio/?matricula=%s&cpf=%s&rg=%s&email=%s', 
	$matricula, $cpf, $rg, $email
);

$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_HEADER, false );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_BINARYTRANSFER, true );
$xml = curl_exec( $ch );
curl_close( $ch );
$DOMDocument = new DOMDocument( '1.0', 'UTF-8' );
$DOMDocument->preserveWhiteSpace = false;
$DOMDocument->formatOutput = true;
$DOMDocument->load( $xml );


$status = $DOMDocument->getElementsByTagName( 'status_associacao' )->item( 0 )->nodeValue;

echo $status;
	//header("Location: status.php?sta='$status");
?>

 

Da esse erro ai:

 

 

SCREAM: Error suppression ignored for ( ! ) Fatal error: Call to undefined function curl_init() in C:\wamp\www\xml\teste-doc.php on line 13

 

local da esse erro, no servidor fica carregando sem parar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, o wamp, posso estar enganado, mas ele não tem curl habilitado, e talvez nem o libxml pra vc usar o simplexml que vc estava tentando no início. Verifica isso:

 

<?php
phpinfo();
?>
Cria um documento php com esse conteúdo e acessa ele via browser, verifica se "libXML support" está "active". E verifica também se "cURL support" está "enabled";
Caso não estejam, vc pode usar o xampp, que já vem com isso tudo habilitado por padrão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No meu servidor, ja tem essa opção habilitada...

 

ja fiz as outras opções que me forneceram, usando o DOM Document... Local ele funciona mas no servidor de hospedagem da erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal obrigado a todos pela ajuda, consegui resolver o problema...

 

Meu servidor de hospedagem tava bloqueando a porta usada nesse link, resolução apenas tirei a porta do link. testei pra vê se iria fazer a conexão normalmente, e fez... e ta realizando as consultas normalmente com o status que desejo.

 

Obrigado a todos

 

Flwss

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.