dgateles 0 Denunciar post Postado Maio 21, 2016 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
ESerra 744 Denunciar post Postado Maio 21, 2016 Comece removendo o @, ali você está suprimindo um possível erro. Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Maio 21, 2016 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
dgateles 0 Denunciar post Postado Maio 21, 2016 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
ESerra 744 Denunciar post Postado Maio 21, 2016 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
dgateles 0 Denunciar post Postado Maio 21, 2016 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