last day (15 days later) » 

12:01 AM
0
Q: ERRO ao exibir vários valores JSON em Variáveis PHP a partir de uma URL

Alexandre LopesEstou tendo problemas ao exibir vários valores de um arquivo JSON externo. Abaixo segue o código PHP que estou utilizando para fazer a requisição: $json_file = file_get_contents("http://app.tce.ma.gov.br:8889/licitacoes/104372/"); $json_str = json_decode($json_file, true); Segue trecho ...

 
O erro é outro, olha aqui deu certo os dados foram retornados com exito.
 
E qual seria esse outro erro? Porque aqui não está imprimindo os valores de jeito algum.
Qual seria a forma de corrigir? Não sou muito experiente com PHP.
 
Tem tantas possibilidades de erro. Como está o arquivo HTML resultante?
 
@AugustoVasques - O arquivo HTML resultante apenas fica todo branco, segue o print do arquivo PHP: i.postimg.cc/bwHLK5Fh/print-1.png e o print do resultado: i.postimg.cc/zfzp5k9R/print-2.png
 
Não perguntei sobre a imagem do HTML :D, eu gostaria de saber sobre o script gerado em HTML.
 
12:01 AM
Qual seria o script gerado? Fiquei meio perdido aqui =)
 
<html> ...</html>. Se estiver no chrome pressione CTRL + U. Só uma coisa, antes dá um refresh na página, por desencargo de consciência.
 
Não aparece nada. Confere aí: passagemfranca.ma.gov.br/teste.php
 
a fonte veio em branco. Tenta dar um echo "teste..." antes da primeira linha de código. Se não aparecer nada remova todo o código e só deixe o echo "teste.."
 
Exatamente, isso que está acontecendo. Eu editei a pergunta, no "trecho" do JSON requisitado que coloquei de exemplo, onde comentei os 2 objetos que estou tentando imprimir na página.
 
Tenta dar um echo "teste..." antes da primeira linha de código. Se não aparecer nada remova todo o código e só deixe o echo "teste.." Estou suspeitando que seja erro na instalação do PHP.
 
12:01 AM
Pronto, coloquei o echo "teste"; e apareceu a palavra teste. passagemfranca.ma.gov.br/teste.php print do arquivo php: i.postimg.cc/y8HX7Twy/print-3.png
 
$json_file é false por isso que não está exibindo nada, a função file_get_contents não está conseguindo ler o arquivo e retorna false indicando um erro. Pegue esse arquivo com curl pois tem melhor suporte para controle de erros.
 
Você poderia criar uma resposta? Como falei, sou novo com PHP =/
 
Movi para o chat porque a conversa está longa....
 
Olá Augusto, muito obrigado pela ajuda!
 
Eu não tenho informações suficientes para para criar um exemplo pois eu ainda não sei o por que do seu servidor estar barrando a leitura do JSON.
 
12:04 AM
Coloquei todo aquele código dentro de um arquivo PHP, como você mesmo viu, porém não retorna nada na página, apenas fica a página toda branca. Eu utilizei o exemplo que encontrei em pt.stackoverflow.com/questions/49421/…
Quando testei esse mesmo exemplo no meu servidor, funcionou perfeitamente. Só que eu tentei adaptar esse código que continha o arquivo JSON desse usuário, e coloquei o URL do meu arquivo JSON. Fiz alguns testes e nada de funcionar. Penso que o erro está nessa parte
`$numeroente = $json_str["unidade"]["orgao"]["ente"]["enteId"];
$autoridade = $json_str["nomeAutoridade"];`
 
O seu código está correto, mas pode ser uma configuração, ou firewall, pode ser recusa do outro servidor ao seu servidor,........ existem uma centena de fatores que podem estar impedindo a leitura
O problema não é com o código, o problema está na infra estrutura
Use o curl php.net/manual/pt_BR/book.curl.php para fazer a leitura do JSON pois ele pode informar claramente qual o problema de comunicação que está ocorrendo
 
1
Q: Como pegar JSON de uma URL pra usar no meu arquivo PHP?

Raylan SoaresQuero pegar o valor do dólar do JSON exibido nessa URL: http://api.promasters.net.br/cotacao/v1/valores?moedas=USD&alt=json pra usar no meu arquivo php, tem como fazer isso somente com PHP? Também tem essa opção XML: http://api.promasters.net.br/cotacao/v1/valores?moedas=USD&alt=xml

Nessa pergunta aconteceu esse "bloqueio", e então foi utilizado o cURL para falsea-lo como o próprio usuário respondeu.
Tentei colocar:
function file_get_contents($url) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, True);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl,CURLOPT_USERAGENT,'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:7.0.1) Gecko/20100101 Firefox/7.0.1');
$return = curl_exec($curl);
curl_close($curl);
return $return;
}
 
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL,""http://app.tce.ma.gov.br:8889/licitacoes/104372/"");
$result=curl_exec($ch);
curl_close($ch);
 
Porém apareceu aqui no navegador: Esta página não está funcionandopassagemfranca.ma.gov.br não consegue atender a esta solicitação no momento.
HTTP ERROR 500
 
Eu estava montando esse exemplo quando postou
Leia com calma a documentação do curl. Tente entender e para então colocar no seu código.
 
12:17 AM
Você está testando aí em algum servidor ou localhost ?
 
HTTP ERROR 500 nesse caso é um no seu php.
Testei no servidor remoto do Repl.it
 
Engraçado é que quando coloco todo o código da pergunta: pt.stackoverflow.com/questions/49421/… funciona perfeitamente! E não precisa de cURL nem nada do tipo.
 
Tá funcionando com a sua URL?
 
Observa como funciona perfeitamente: passagemfranca.ma.gov.br/teste.php
Mas quando tento colocar a minha URL e o objeto que eu desejo, dá esse erro e a página fica branca.
<?php
$json_file = file_get_contents("http://backpack.tf/api/IGetUsers/v3/?steamids=76561198012598620");

$json_str = json_decode($json_file, true);

$nome = $json_str["response"]["players"]["76561198012598620"]["name"];
echo "$nome";
?>
Testa esse código, ele funciona perfeitamente!
 
Minha orientação é essa: Veja o seu código funcionando repl.it/repls/ConventionalGiftedDisk , o problema está acontecendo por conta de infraestrutura que está impedindo o seu servido de se comunicar com o servidor que hospeda o JSON, modifique o seu código substituindo file_get_contents por curl pois file_get_contents não possui mecanismos de controle de erro. Pois assim o retorno do controle de erro permitirá identificar a causa desse hiato de comunicação entre os servidores.
Fora isso não existe mágica ou código milagroso. Uma questão de análise de sistema e não de codificação.
 
12:31 AM
Interessante, não conhecia esse repl.it
Você consegue modificar file_get_contents para cURL?
Iria ajudar muito =(
 
12:43 AM
Está fora do escopo da pergunta, faça a sua tentativa havendo falha edite essa pergunta colocando o novo código ou então abra uma nova pergunta contendo a sua tentativa no formato de um exemplo mínimo, completo e verificavel. Que assim não só eu mas todos a comunidade poderão oferecer contribuição .
 
Eu editei a pergunta, dá uma conferida lá! :)
 
Ou então faça uma pergunta sobre como utilizar o curl para identificar erros de comunicação entre dois seridores. São as regras dá página, não minhas. Só posso oferecer ajuda específica ao foi perguntado.
 
1:34 AM
Vou fazer isto amigo!
 
 
17 hours later…
6:24 PM
@AlexandreLopes: eu li a menssagem de erro obtida na pergunta que acabou de remover e ela ocorre em duas situações ou a configuração allow_url_fopen não está presente ou está desabilitada no php.inihttps://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen , ou o firewall do servidor está configurado para bloquear o endereço que está tentando acessar.
 

last day (15 days later) »