Ir para conteúdo

POWERED BY:

Arquivado

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

ling

Ler API com PHP e transformar valores em variáveis para dar update no banco de dados

Recommended Posts

Estou precisando fazer a leitura da API : https://api.cartolafc.globo.com/atletas/mercado, e depois transformar cada informação em variáveis para assim dar um update no banco de dados.

 

Estou usando o seguinte código para fazer a leitura:

<?php
$arquivo = "https://api.cartolafc.globo.com/atletas/mercado";
$info = file_get_contents($arquivo);
$lendo = json_decode($info);
foreach($lendo->atletas as $campo){;?>
	
<table><tr><td width="150">Apelido</td><td width="40">Media</td><td width="40">Jogos</td></tr></table>
<table><tr><td width="150"><?php echo $campo->apelido;?></td><td width="40"><?php echo $campo->media_num;?></td><td width="40"><?php echo $campo->jogos_num;?></td></tr></table>

<?php
}
?>

Porém da erro, percebi que  se eu baixar essa informação manualmente da API e salvar como "dados.json" e salvar no meu servidor dá certo a leitura com esse mesmo código acima.

 

Alguém pode me dar uma dica de porque não é possível ler a informação direto da API do servidor da Globo?

 

Ou como posso fazer para fazer está leitura de uma forma diferente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual é o erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

( ! ) Warning: file_get_contents(https://api.cartolafc.globo.com/atletas/mercado): failed to open stream: HTTP request failed! in C:\wamp\www\cfc\lerjson.php on line 3


( ! ) Notice: Trying to get property of non-object in C:\wamp\www\cfc\lerjson.php on line 5


( ! ) Warning: Invalid argument supplied for foreach() in C:\wamp\www\cfc\lerjson.php on line 5

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilize cURL ao invés de file_get_contents. Apesar de permitir acessar uma URI, o servidor precisa estar liberado para permitir a conexão (diretiva allow_url_fopen).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei de varias maneiras, esse abaixo retorna mensagem "null", o segundo código não retorna nenhuma informação, fica em branco, nunca trabalhei com CURL, se tiver um código pronto poderia me passar por favor, somente com o básico mesmo, se fazer a leitura já ta valendo, o resto eu me viro.

<?php
$url = "http://api.cartolafc.globo.com/atletas/mercado";

$ch = curl_init();

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL,$url);
$result=curl_exec($ch);

curl_close($ch);

var_dump(json_decode($result, true));
?>
<?php
$cr = curl_init();

curl_setopt($cr, CURLOPT_URL, "http://api.cartolafc.globo.com/atletas/mercado");

curl_setopt($cr, CURLOPT_RETURNTRANSFER, true);

$retorno = curl_exec($cr);

curl_close($cr);

echo $retorno;
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu estou sem servidor para testar aqui, e os onlines que eu uso para teste não possuem cURL habilitado.

 

Entretanto, o código seria o seguinte:

$ch = curl_init();

curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, 'http://api.cartolafc.globo.com/atletas/mercado');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);       

$data = curl_exec($ch);
curl_close($ch);

return $data;

https://stackoverflow.com/a/8543512/1628790

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz o teste e nenhum erro é apresentado porém a pagina fica em branco, provavelmente o servidor da globo bloqueia a leitura por cURL então.

 

Vou tentar de outras formas então, porque se eles disponibilizam a API é porque de algum modo é possível pegar as informações.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente ativar os erros, pode ser que a biblioteca curl não esteja instalada, conforme no tópico abaixo.

 

Caso não consiga exibir os erros, olhe com a função phpinfo().

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a ajuda dos amigos, mas preciso entender uma processo que não estou conseguindo sucesso.

      Como mencionado no Título estou escrevendo um Sistema Web para Gerenciamento de Empresa.
       
      Minha dúvida, que preciso muito entender:
      - preciso agora escrever a Rotina para Emissão de NFe e essa parte não estou conseguindo.
       
      tenho assistido alguns vídeos e leituras, mas não estou conseguindo sucesso, já fiz toda as importações das LIB da NFePhp conforme orientação.

      Preciso de ajuda.

      Algum dos amigos tem conhecimento de algum passo-a-passo explicando a criação dessa rotina ?

      tenho visto alguns vídeos com LARAVEL, mas quando tento utilizar e converter para PHP+Codeiginter, dá uma fila de erros que não entendo, mesmo informando as lib necessárias.

      Alguns do amigo tem algum vídeo, leitura explicando essa parte ?

      Grato,

      Cesar.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.