Foros del Web » Programando para Internet » PHP »

Obtener JSON en PHP

Estas en el tema de Obtener JSON en PHP en el foro de PHP en Foros del Web. Estoy realizando unas pruebas con https://sheety.co/ sirve para tener una API con una hoja de excel que tengamos pública en Google. En el ejemplo de ...
  #1 (permalink)  
Antiguo 13/06/2019, 03:08
Avatar de senseeye3led  
Fecha de Ingreso: abril-2016
Ubicación: 127.0.0.1
Mensajes: 140
Antigüedad: 3 años, 7 meses
Puntos: 8
Pregunta Obtener JSON en PHP

Estoy realizando unas pruebas con https://sheety.co/ sirve para tener una API con una hoja de excel que tengamos pública en Google.

En el ejemplo de Sheety puedo obtener el fichero JSON sin problema:

Código:
<html>
<head>
<title>UK Theme Parks</title>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.12/handlebars.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
	$.getJSON('https://api.sheety.co/uk-theme-parks', function(data) {
		var template = Handlebars.compile($('#item-template').html())
		$('#items').html(template(data))
	})
})
</script>
<script id="item-template" type="text/x-handlebars-template">
<ul>
	{{#each this}}
		<li><a href="{{website}}">{{name}}</a></li>
	{{/each}}
</ul>
</script>
</head>
<body>
<div id="items">Loading theme parks...</div>
</body>
</html>
Quiero realizar el proceso usando únicamente PHP, para ello utilizo el siguiente código:

Código PHP:

<?php
// funcion para evitar problemas con SSL
function file_get_contents_curl$url ) {

  
$ch curl_init();

  
curl_setopt$chCURLOPT_AUTOREFERERTRUE );
  
curl_setopt$chCURLOPT_HEADER);
  
curl_setopt$chCURLOPT_RETURNTRANSFER);
  
curl_setopt$chCURLOPT_URL$url );
  
curl_setopt$chCURLOPT_FOLLOWLOCATIONTRUE );

  
$data curl_exec$ch );
  
curl_close$ch );

  return 
$data;

}

$json_string 'https://api.sheety.co/uk-theme-parks';

$jsondata file_get_contents_curl($json_string);
var_dump($jsondata); echo '<br>';

$obj json_decode($jsondata); 
var_dump($obj);
?>
Ejecutando el script PHP obtengo en el $obj bool(false), por lo que entiendo que no estoy accediendo correctamente a la información o no me estoy trayendo realmente el json.
  #2 (permalink)  
Antiguo 13/06/2019, 07:56
 
Fecha de Ingreso: abril-2006
Mensajes: 317
Antigüedad: 13 años, 6 meses
Puntos: 61
Respuesta: Obtener JSON en PHP

Cita:
Iniciado por senseeye3led Ver Mensaje
Estoy realizando unas pruebas con https://sheety.co/ sirve para tener una API con una hoja de excel que tengamos pública en Google.

En el ejemplo de Sheety puedo obtener el fichero JSON sin problema:

Código:
<html>
<head>
<title>UK Theme Parks</title>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.12/handlebars.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
	$.getJSON('https://api.sheety.co/uk-theme-parks', function(data) {
		var template = Handlebars.compile($('#item-template').html())
		$('#items').html(template(data))
	})
})
</script>
<script id="item-template" type="text/x-handlebars-template">
<ul>
	{{#each this}}
		<li><a href="{{website}}">{{name}}</a></li>
	{{/each}}
</ul>
</script>
</head>
<body>
<div id="items">Loading theme parks...</div>
</body>
</html>
Quiero realizar el proceso usando únicamente PHP, para ello utilizo el siguiente código:

Código PHP:

<?php
// funcion para evitar problemas con SSL
function file_get_contents_curl$url ) {

  
$ch curl_init();

  
curl_setopt$chCURLOPT_AUTOREFERERTRUE );
  
curl_setopt$chCURLOPT_HEADER);
  
curl_setopt$chCURLOPT_RETURNTRANSFER);
  
curl_setopt$chCURLOPT_URL$url );
  
curl_setopt$chCURLOPT_FOLLOWLOCATIONTRUE );

  
$data curl_exec$ch );
  
curl_close$ch );

  return 
$data;

}

$json_string 'https://api.sheety.co/uk-theme-parks';

$jsondata file_get_contents_curl($json_string);
var_dump($jsondata); echo '<br>';

$obj json_decode($jsondata); 
var_dump($obj);
?>
Ejecutando el script PHP obtengo en el $obj bool(false), por lo que entiendo que no estoy accediendo correctamente a la información o no me estoy trayendo realmente el json.
tu funcion esta correcta, prueba con obtener algo simple un texto, podria ser que tengas algun FIREWALL activo, que evite que se obtenga los datos, tambien siempre que uses codigo php que puede que este funcionando o no, trata de especificar la version y la plataforma, ahora mismo tu codigo esta funcionando en un MACOS mojave con php 7.1
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.me/pools/c/87BTML2gwr
  #3 (permalink)  
Antiguo 13/06/2019, 11:01
Avatar de senseeye3led  
Fecha de Ingreso: abril-2016
Ubicación: 127.0.0.1
Mensajes: 140
Antigüedad: 3 años, 7 meses
Puntos: 8
Respuesta: Obtener JSON en PHP

@tuadmin
He probado en distintas máquinas Windows (IIS) con PHP 5.4.45 y cURL 7.42.1 habilitado.

He probado el funcionamiento básico de cURL y funciona correctamente; he probado acciones contra contenido de mi servidor cómo contra servidores ajenos por si pudiera ser un tema de Firewall.

He usado el siguiente script para verificar el correcto funcionamiento de cURL hacía fuera:
Código PHP:
 <?php  
 $ch 
curl_init();  
 
curl_setopt($chCURLOPT_URL"http://www.google.com/");  
 
curl_setopt($chCURLOPT_HEADERtrue);  //queremos las cabeceras de la respuesta
 
curl_setopt($chCURLOPT_NOBODYtrue);  //no queremos el cuerpo de la respuesta
 
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);  //el resultado lo almacenaremos en una cadena
 
$data curl_exec($ch);  
 
curl_close($ch);
 echo 
$data;  
 
?>
Todo sin problema.

Lo raro es, que el código que el colgado en el primer post funcione en tu máquina y falle en mi caso ... seguiremos investigando.
  #4 (permalink)  
Antiguo 13/06/2019, 14:23
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.554
Antigüedad: 11 años, 8 meses
Puntos: 1085
Respuesta: Obtener JSON en PHP

definitivamente es problema de tu servidor, en este enlace puedes probar tu propio código que dejaste inicialmente y veras que funciona sin problemas

http://phpfiddle.org/
  #5 (permalink)  
Antiguo 14/06/2019, 02:48
Avatar de senseeye3led  
Fecha de Ingreso: abril-2016
Ubicación: 127.0.0.1
Mensajes: 140
Antigüedad: 3 años, 7 meses
Puntos: 8
Respuesta: Obtener JSON en PHP

Cita:
Iniciado por ArturoGallegos Ver Mensaje
definitivamente es problema de tu servidor, en este enlace puedes probar tu propio código que dejaste inicialmente y veras que funciona sin problemas

http://phpfiddle.org/
En phpfiddle está funcionando con:
- OS: Unix
- PHP: 7.0.33
- cURL: 7.62.0

En una de mis máquinas:
- OS: Windows Server x32
- PHP: 5.4.45
- cURL: 7.42.1
  #6 (permalink)  
Antiguo 14/06/2019, 08:56
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.554
Antigüedad: 11 años, 8 meses
Puntos: 1085
Respuesta: Obtener JSON en PHP

El sistema operativo no debe ser impedimento para que trabaje adecuadamente.

Lo único que me causa ruido es la versión de PHP tan vieja y obsoleta, lo mínimo recomendado es 5.6 de PHP y esa también ya esta obsoleta hace mucho tiempo.

Trata de actualizar y a ser posible a una versión superior a PHP 7.0



La zona horaria es GMT -6. Ahora son las 06:40.