Ir para conteúdo

POWERED BY:

Arquivado

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

dgateles

Obter Json e exibir

Recommended Posts

Estou tentando usar uma API para obter os dados em JSON, decodificar e exibir mas não retorna nada, segue meu código:

<?php
  $api_url="http://api.promasters.net.br/cotacao/v1/valores";
  $res= @json_decode(file_get_contents($api_url),TRUE);
  if($res["status"]){
    echo "false";
  }else{
    echo $res["valores"];
  }
?>

Eu testei o mesmo código com outro JSON e funcionou normalmente.

Site da API: http://api.promasters.net.br/cotacao/

 

Grato!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Comece removendo o @, ali você está suprimindo um possível erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça por CURL, é o melhor caminho à seguir.

$cURL = curl_init('http://api.promasters.net.br/cotacao/v1/valores');
    curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
    $data = curl_exec($cURL);
    $dados = json_decode($data);
    
    echo $dados->status;

    curl_close($cURL);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Comece removendo o @, ali você está suprimindo um possível erro.

Com ou sem não retorna erro nenhum

 

 

Faça por CURL, é o melhor caminho à seguir.

$cURL = curl_init('http://api.promasters.net.br/cotacao/v1/valores');
    curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
    $data = curl_exec($cURL);
    $dados = json_decode($data);
    
    echo $dados->status;

    curl_close($cURL);

Continua do mesmo jeito, não retorna nada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pegando o código de retorno do curl ele é o esperado, 200. Então a hipótese mais provável é que o sistema que você está tentando acessar não permite requisições externas, a solução é você enviar os cabeçalhos simulando um navegador...

$url = 'http://api.promasters.net.br/cotacao/v1/valores';
$navegador= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';


$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $navegador);
curl_setopt($ch, CURLOPT_URL,$url);
$resultado = curl_exec($ch);
var_dump($resultado);

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Pegando o código de retorno do curl ele é o esperado, 200. Então a hipótese mais provável é que o sistema que você está tentando acessar não permite requisições externas, a solução é você enviar os cabeçalhos simulando um navegador...

$url = 'http://api.promasters.net.br/cotacao/v1/valores';
$navegador= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';


$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $navegador);
curl_setopt($ch, CURLOPT_URL,$url);
$resultado = curl_exec($ch);
var_dump($resultado);

Era só isso mesmo, até no meu código anterior era só add um ini_set que resolvia. Obrigado pela ajuda !

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.