Ir para conteúdo
Fórum Script Brasil
  • 0

Não consigo retornar uma API Json PHP


paulo_henrique_cnl

Pergunta

Olá, boa tarde! Estou tentando retornar os dados de uma api mais retorna apenas vázio. Podem me ajudar?

 

            $pagina = file_get_contents('http://transparencia.se.sesc.com.br/transparencia/api/licitacoes?type=json?page_size=1');
            $page = json_decode($pagina);
            print_r($page);
            exit;

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Esse é um problema que enfrento há dois anos e não sei como resolver.

O json_decode está retornando nulo para a $pagina porque ele entende que a $pagina não é um json válido.

A pergunta que eu faço há dois anos é como tornar um texto no formato json se tornar válido no mundo do PHP. Como eu não entendo nada de programação, eu usei o famigerado método da tentativa e erro.

Copiei a página http://transparencia.se.sesc.com.br/transparencia/api/licitacoes dentro do Notepad+. O Notepad+ ajuda bastante, pois ele avermelha as chaves { } e assim fica fácil separar as informações por parte e criar o arquivo astudy.php, assim

astudy.php
------------------------------------

<?php
$p001='{"pagina_total":3,"pagina_atual":1,"pagina_anterior":null,"pagina_proxima":2,"registro_total":21,"registro_atual":10}';
$teste=json_decode($p001);var_dump($teste);

$p002='{"id":54,"identificacao":"Edital de Concorr\u00eancia N\u00b0 22\/000017","objeto":"Contrata\u00e7\u00e3o de empresa especializada para execu\u00e7\u00e3o das obras de revitaliza\u00e7\u00e3o da \u00e1rea de entorno das piscinas e recupera\u00e7\u00e3o do parque aqu\u00e1tico das unidades Sesc Praia e Sesc Beira Rio.","data_publicacao":"2022-08-19","data_abertura":"2022-09-06","local":"Sesc Caixeral  Parna\u00edba-PI","telefone":"86 3217-2852","email":"licitasescpi@pi.sesc.com.br","processo":"N\u00b0 22\/000017","vencedores":[],"responsavel":"Supervis\u00e3o de Licita\u00e7\u00e3o","valor":"","modalidade":"Concorr\u00eancia","documentos":[{"descricao":"Edital de Concorr\u00eancia","arquivo":"http:\/\/transparencia.se.sesc.com.br\/uploads\/licitacao\/18\/54\/54-edital-de-concorrencia-1661169326.pdf","tipo":null,"data":"2022-08-19 00:00:00"},{"descricao":"Anexo IV","arquivo":"http:\/\/transparencia.se.sesc.com.br\/uploads\/licitacao\/18\/54\/54-anexo-iv-1660909754.pdf","tipo":null,"data":"2022-08-19 00:00:00"},{"descricao":"Anexo III","arquivo":"http:\/\/transparencia.se.sesc.com.br\/uploads\/licitacao\/18\/54\/54-anexo-iii-1660909732.pdf","tipo":null,"data":"2022-08-19 00:00:00"},{"descricao":"ANEXO II ","arquivo":"http:\/\/transparencia.se.sesc.com.br\/uploads\/licitacao\/18\/54\/54-anexo-ii-1660909699.pdf","tipo":null,"data":"2022-08-19 00:00:00"},{"descricao":"Anexo I","arquivo":"http:\/\/transparencia.se.sesc.com.br\/uploads\/licitacao\/18\/54\/54-anexo-i-1660909679.pdf","tipo":null,"data":"2022-08-19 00:00:00"},{"descricao":"Aviso de Licita\u00e7\u00e3o","arquivo":"http:\/\/transparencia.se.sesc.com.br\/uploads\/licitacao\/18\/54\/54-aviso-de-licitacao-1660909627.pdf","tipo":null,"data":"2022-08-19 00:00:00"}],"classificados":[],"desclassificados":[]}';
$teste=json_decode($p002);var_dump($teste);

$p003=`{"id":53,"identificacao":" Edital de Concorr\u00eancia RP N\u00b0 22\/000015","objeto":"Aquisi\u00e7\u00e3o de Materiais  de Consumo Odontol\u00f3gico EPI'S para atender as demandas das clinicas odontol\u00f3gicas do Sesc\/PI.","data_publicacao":"2022-07-12","data_abertura":"2022-07-27","local":"Sesc AR\/PI","telefone":"86 3217-2852","email":"licitasescpi@pi.sesc.com.br","processo":"RP N\u00b0 22\/000015","vencedores":[],"responsavel":"Supervis\u00e3o de Licita\u00e7\u00e3o","valor":"","modalidade":"Concorr\u00eancia","documentos":[{"descricao":"Aviso de Resultado de Classifica\u00e7\u00e3o das Propostas","arquivo":"http:\/\/transparencia.se.sesc.com.br\/uploads\/licitacao\/18\/53\/53-aviso-de-resultado-de-classificacao-das-propostas-1659095595.pdf","tipo":null,"data":"2022-07-28 00:00:00"},{"descricao":"Ata de Sess\u00e3o 01","arquivo":"http:\/\/transparencia.se.sesc.com.br\/uploads\/licitacao\/18\/53\/53-ata-de-sessao-01-1658939463.pdf","tipo":null,"data":"2022-07-27 00:00:00"},{"descricao":"Edital de Concorr\u00eancia","arquivo":"http:\/\/transparencia.se.sesc.com.br\/uploads\/licitacao\/18\/53\/53-edital-de-concorrencia-1657812850.pdf","tipo":null,"data":"2022-07-27 00:00:00"},{"descricao":"Aviso de Licita\u00e7\u00e3o","arquivo":"http:\/\/transparencia.se.sesc.com.br\/uploads\/licitacao\/18\/53\/53-aviso-de-licitacao-1657797988.pdf","tipo":null,"data":"2022-07-12 00:00:00"},{"descricao":"MINUTA DO CONTRATO","arquivo":"http:\/\/transparencia.se.sesc.com.br\/uploads\/licitacao\/18\/53\/53-minuta-do-contrato-1658160342.docx","tipo":null,"data":"2022-02-27 00:00:00"}],"classificados":[],"desclassificados":[]}`;
$teste=json_decode($p003);var_dump($teste);

Para montar a variável $p003 eu tive que improvisar. O texto tem aspas simples e duplas ao mesmo tempo, e desconfio que é isso é que faz o PHP entender que o json não é válido. Para colocar o texto na variável eu usei as aspas inclinadas (é o acento agudo), e isso NÃO deu certo, o PHP insiste em reclamar que o $p003 é nulo, ou seja, não é um json válido.

O resultado ficou assim:

C:\wamp64\www\astudy\astudy.php:3:
object(stdClass)[1]
  public 'pagina_total' => int 3
  public 'pagina_atual' => int 1
  public 'pagina_anterior' => null
  public 'pagina_proxima' => int 2
  public 'registro_total' => int 21
  public 'registro_atual' => int 10
C:\wamp64\www\astudy\astudy.php:6:
object(stdClass)[2]
  public 'id' => int 54
  public 'identificacao' => string 'Edital de Concorrência N° 22/000017' (length=37)
  public 'objeto' => string 'Contratação de empresa especializada para execução das obras de revitalização da área de entorno das piscinas e recuperação do parque aquático das unidades Sesc Praia e Sesc Beira Rio.' (length=194)
  public 'data_publicacao' => string '2022-08-19' (length=10)
  public 'data_abertura' => string '2022-09-06' (length=10)
  public 'local' => string 'Sesc Caixeral  Parnaíba-PI' (length=27)
  public 'telefone' => string '86 3217-2852' (length=12)
  public 'email' => string 'licitasescpi@pi.sesc.com.br' (length=27)
  public 'processo' => string 'N° 22/000017' (length=13)
  public 'vencedores' => 
    array (size=0)
      empty
  public 'responsavel' => string 'Supervisão de Licitação' (length=26)
  public 'valor' => string '' (length=0)
  public 'modalidade' => string 'Concorrência' (length=13)
  public 'documentos' => 
    array (size=6)
      0 => 
        object(stdClass)[3]
          public 'descricao' => string 'Edital de Concorrência' (length=23)
          public 'arquivo' => string 'http://transparencia.se.sesc.com.br/uploads/licitacao/18/54/54-edital-de-concorrencia-1661169326.pdf' (length=100)
          public 'tipo' => null
          public 'data' => string '2022-08-19 00:00:00' (length=19)
      1 => 
        object(stdClass)[4]
          public 'descricao' => string 'Anexo IV' (length=8)
          public 'arquivo' => string 'http://transparencia.se.sesc.com.br/uploads/licitacao/18/54/54-anexo-iv-1660909754.pdf' (length=86)
          public 'tipo' => null
          public 'data' => string '2022-08-19 00:00:00' (length=19)
      2 => 
        object(stdClass)[5]
          public 'descricao' => string 'Anexo III' (length=9)
          public 'arquivo' => string 'http://transparencia.se.sesc.com.br/uploads/licitacao/18/54/54-anexo-iii-1660909732.pdf' (length=87)
          public 'tipo' => null
          public 'data' => string '2022-08-19 00:00:00' (length=19)
      3 => 
        object(stdClass)[6]
          public 'descricao' => string 'ANEXO II ' (length=9)
          public 'arquivo' => string 'http://transparencia.se.sesc.com.br/uploads/licitacao/18/54/54-anexo-ii-1660909699.pdf' (length=86)
          public 'tipo' => null
          public 'data' => string '2022-08-19 00:00:00' (length=19)
      4 => 
        object(stdClass)[7]
          public 'descricao' => string 'Anexo I' (length=7)
          public 'arquivo' => string 'http://transparencia.se.sesc.com.br/uploads/licitacao/18/54/54-anexo-i-1660909679.pdf' (length=85)
          public 'tipo' => null
          public 'data' => string '2022-08-19 00:00:00' (length=19)
      5 => 
        object(stdClass)[8]
          public 'descricao' => string 'Aviso de Licitação' (length=20)
          public 'arquivo' => string 'http://transparencia.se.sesc.com.br/uploads/licitacao/18/54/54-aviso-de-licitacao-1660909627.pdf' (length=96)
          public 'tipo' => null
          public 'data' => string '2022-08-19 00:00:00' (length=19)
  public 'classificados' => 
    array (size=0)
      empty
  public 'desclassificados' => 
    array (size=0)
      empty
C:\wamp64\www\astudy\astudy.php:9:null

Fiz mais uma tentativa, tentei substituir todas as aspas simples por duplas. O Notepad+ não fez! Então, pedi para substituir todas as aspas simples por @, e depois o @ por aspas duplas. Também não deu certo. Estudando mais um pouco a variável $p003, eu percebi que o problema não é as aspas, mas é que havia um aspas que não deveria estar lá, assim EPI'S para atender. Eu arranquei na unha, e agora sim eu consegui converter o $p003 em json.

O PHP é o melhor programa do mundo, quando funciona.

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...