[Php-avanzado] consulta cURL
Cesar Gimenez Lascano
cesargimenezlascano en gmail.com
Mie Jun 5 13:33:51 ART 2013
Esta es la URL con la que me estoy comunicando con la api por si quieren
hacer algun test (incluye mis api keys), si la pongo en el navegador se
imprimen los datos recibidos en json. Gracias!
https://api.foursquare.com/v2/venues/4ee6d4ed775ba356e007bb76/tips?sort=recent&limit=2&client_id=315YX0EUHY5VW5SFVCPIBMMVYTSNCXNML20AHEEDL1Q2TMEE&client_secret=HOJHGWETZPZYXLS2NYSPMUO0A4WO2UQCUHVWEAXQWAOWROZ2
El 5 de junio de 2013 10:05, Cesar Gimenez Lascano <
cesargimenezlascano en gmail.com> escribió:
> Gracias. me sigue imprimiendo NULL, me estará faltando algo mas?
>
>
> El 4 de junio de 2013 20:18, Matias Gea <matigea en gmail.com> escribió:
>
> Te falta un parámetro de json decode:
>>
>> json_decode($contents, true);
>>
>> Sino te devuelve un objeto, en vez de un array.
>>
>> Saludos!
>>
>>
>>
>> El 4 de junio de 2013 20:08, Cesar Gimenez Lascano <
>> cesargimenezlascano en gmail.com> escribió:
>>
>> Lo estoy probando pero me devuelve NULL, el código:
>>>
>>> <?php
>>> $ch = curl_init();
>>> curl_setopt($ch, CURLOPT_URL, '
>>> https://api.foursquare.com/v2/venues/VENUE_ID/tips');
>>> curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
>>> $contents = curl_exec ($ch);
>>> $result = json_decode($contents);
>>> print($result['response']['tips']['text']);
>>> var_dump($result);
>>> curl_close ($ch);
>>> ?>
>>>
>>>
>>> El 4 de junio de 2013 19:20, Matias Gea <matigea en gmail.com> escribió:
>>>
>>> La respuesta parece json standard. Hacé algo así:
>>>>
>>>> $arr = json_decode($respuesta,true);
>>>>
>>>> te va a devolver un array asociativo en $arr, después, para ver el
>>>> valor hacés $arr['response']['tips']['text']
>>>>
>>>> Avisanos como fue.
>>>>
>>>> Saludos!
>>>>
>>>>
>>>> El 4 de junio de 2013 19:02, Cesar Gimenez Lascano <
>>>> cesargimenezlascano en gmail.com> escribió:
>>>>
>>>> me puse a probar con curl, en el curso habíamos visto que es un
>>>>> programa externo, pero existe una biblioteca php<http://www.php.net/manual/es/book.curl.php>tmb no? me podrían dar una mano para recuperar los datos de la api con curl
>>>>> y lo que mas se me complico, guardar el dato "text" de la respuesta que es
>>>>> una matriz. Gracias!!
>>>>>
>>>>> URL:
>>>>> https://api.foursquare.com/v2/*venues/VENUE_ID/tips*
>>>>>
>>>>> formato de la respuesta:
>>>>>
>>>>> {
>>>>> response: {
>>>>>
>>>>> - tips: {
>>>>> - count: 305
>>>>> - items: [
>>>>> - {
>>>>> - id: "51a762a4498e136ef3a77f2b"
>>>>> - createdAt: 1369924260
>>>>> - *text:* "I don't care if you get the beloved blueberry
>>>>> pancakes or not, but the must have here is the SUGAR-CURED BACON!"
>>>>> - canonicalUrl: "
>>>>> https://foursquare.com/item/51a762a4498e136ef3a77f2b"
>>>>> - likes: {
>>>>> - count: 0
>>>>> - groups: [ ]
>>>>> }
>>>>> - like: false
>>>>> - todo: {
>>>>> - count: 0
>>>>> }
>>>>> - user: {
>>>>> - id: "13722555"
>>>>> - firstName: "Mehmetali"
>>>>> - lastName: "Y."
>>>>> - gender: "male"
>>>>> - photo: {
>>>>> - prefix: "https://irs3.4sqi.net/img/user/"
>>>>> - suffix: "/DJUPSJ43K1EJ4ZHF.jpg"
>>>>> }
>>>>> }
>>>>> }
>>>>>
>>>>>
>>>>>
>>>>> El 4 de junio de 2013 16:12, Cesar Gimenez Lascano <
>>>>> cesargimenezlascano en gmail.com> escribió:
>>>>>
>>>>>> Gracias Matias x toda la info!! creo lo mejor sera llamar a las apis
>>>>>> con CURL desde el lado del servidor. Es importante lo que decís que hay que
>>>>>> tratar de no depender de servicios externos y no es un buen uso de AJAX el
>>>>>> que estaba haciendo como dijo Leo. Veremos como sale todo el sábado, dps te
>>>>>> comento, saludo grande y gracias x la ayuda y el tiempo!!!
>>>>>>
>>>>>>
>>>>>> El 4 de junio de 2013 08:55, Matias Gea <matigea en gmail.com> escribió:
>>>>>>
>>>>>> Buenas!
>>>>>>>
>>>>>>> Exactamente a eso me refería. A pasar al server parte del proceso
>>>>>>> que ahora hace el cliente (algunas de las peticiones). Se puede llamar a
>>>>>>> las api fácilmente con curl o directamente file_get_contents o fopen.
>>>>>>>
>>>>>>> Igualmente conozco el paño y sé que algunas de las apis son bastante
>>>>>>> limitadas.
>>>>>>>
>>>>>>> Si hacés las peticiones desde el server, es necesario hacer caché.
>>>>>>> Uno de los parámetros que utilizan las apis para identificar el cliente es
>>>>>>> la ip (en especial las api que no requieren api key). Si hacés muchas
>>>>>>> peticiones desde la misma ip en un período corto de tiempo, te banean. Por
>>>>>>> ejemplo, si una api tiene un máximo de 100 peticiones por hora por ip, si
>>>>>>> no cacheas y te entran 110 clientes al sitio, te bloquean la api.
>>>>>>>
>>>>>>> Por esto también a veces es una buena opción que el haga la petición
>>>>>>> sea el cliente, te evitás los límites de algunas api, pero a costa de hacer
>>>>>>> muchas más peticiones y depender de la estabilidad de servicios externos
>>>>>>> (algunas apis, como la de facebook o twitter, pueden hacer que tu página
>>>>>>> cargue hasta 10 segundos más tarde, lo que rompe estadísticas, experiencia
>>>>>>> de usuario, etc.).
>>>>>>>
>>>>>>> Por eso es un caso a analizar, para no perder funcionalidad, pero
>>>>>>> maximizar la experiencia de usuario y recursos.
>>>>>>>
>>>>>>> Saludos!
>>>>>>>
>>>>>>> PD: Quiero saber que resuelven el sábado!
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> El 3 de junio de 2013 16:04, Cesar Gimenez Lascano <
>>>>>>> cesargimenezlascano en gmail.com> escribió:
>>>>>>>
>>>>>>> Gracias Leo! voy a repensar algunas cosas y seguimos dialogando el
>>>>>>>> sábado. Gracias x el tiempo, nos vemos!!
>>>>>>>>
>>>>>>>>
>>>>>>>> El 3 de junio de 2013 15:49, Leonardo Tadei - Pegasus Tech Supply <
>>>>>>>> leonardot en pegasusnet.com.ar> escribió:
>>>>>>>>
>>>>>>>> Hola Cesar,
>>>>>>>>>
>>>>>>>>> si los datos se actualizan frecuentemente, no veo en tu
>>>>>>>>> código cómo se
>>>>>>>>> cargan más de una vez luego de cargada la página.
>>>>>>>>> La llamada AJAX tiene sentido para recargar una parte de
>>>>>>>>> la página,
>>>>>>>>> pero acá no hay un timer ni nada (o no lo veo) que haga que se
>>>>>>>>> recarguen
>>>>>>>>> las cosas.
>>>>>>>>> No conozco la interfaz, pero por el código parece que hay
>>>>>>>>> botones con
>>>>>>>>> cada categoría (alojamientos, bares, restaurantes, comercios y
>>>>>>>>> puntos de
>>>>>>>>> interés) y que al clickear cada botón, mostrar esa categoría y
>>>>>>>>> dejás de
>>>>>>>>> mostrar las otras.
>>>>>>>>> Al no recargarse automáticamente y al no mostrarse más de
>>>>>>>>> una capa a la
>>>>>>>>> vez, la aproximación KISS sería tener una página para cada cosa y
>>>>>>>>> que
>>>>>>>>> directamente se cargue la que corresponde.
>>>>>>>>> Luego en cada página ejecutás en PHP lo que sea que haga
>>>>>>>>> json/cargarAloj.php
>>>>>>>>> json/cargarBares.php
>>>>>>>>> etc
>>>>>>>>> y generás por ejemplo un vector JS con los datos; en el
>>>>>>>>> cliente solo te
>>>>>>>>> encargás de mostrar esos puntos.
>>>>>>>>>
>>>>>>>>> Esto es a lo que apuntaba Matías: podrías hacer lo mismo
>>>>>>>>> sin usar par
>>>>>>>>> nada AJAX y no pelearte con la race-condition que se te está
>>>>>>>>> generado.
>>>>>>>>>
>>>>>>>>> Por otra parte, posiblemente debas hacer que los:
>>>>>>>>> json/cargarAloj.php
>>>>>>>>> json/cargarBares.php
>>>>>>>>> etc
>>>>>>>>> guarden la respuesta y vayan a buscar cosas nuevas solo
>>>>>>>>> cada X minutos,
>>>>>>>>> para no saturar la API con peticiones (y que te echen a patadas)
>>>>>>>>>
>>>>>>>>> Supongo que como la cosa pasó de sintaxis a cuestiones del
>>>>>>>>> planteo del
>>>>>>>>> algoritmo, las veremos el sábado que viene cuando te des una vuela
>>>>>>>>> por
>>>>>>>>> el curso.
>>>>>>>>>
>>>>>>>>> Saludos cordiales!
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> El lun, 03-06-2013 a las 13:47 -0300, Cesar Gimenez Lascano
>>>>>>>>> escribió:
>>>>>>>>> > Volviendo al código, si sugerís que caRgue los datos de las dos
>>>>>>>>> > llamadas remotas (foursquare, twitter) a la BD, estos datos se
>>>>>>>>> > actualizan frecuentemente, tmb para obtenerlos utilizo las ids
>>>>>>>>> > guardadas en mi BD, no veo como podría hacerlo de esa forma....
>>>>>>>>> > saludos y gracias!!!
>>>>>>>>> >
>>>>>>>>> >
>>>>>>>>> > El 3 de junio de 2013 13:40, Cesar Gimenez Lascano
>>>>>>>>> > <cesargimenezlascano en gmail.com> escribió:
>>>>>>>>> > Uh! perdón a mi por el error de tipeo!! creo que me
>>>>>>>>> traiciono
>>>>>>>>> > el subconciente porque esta implementacion se me complico
>>>>>>>>> > bastante....disculpas...
>>>>>>>>> >
>>>>>>>>> >
>>>>>>>>> > El 3 de junio de 2013 12:37, Leonardo Tadei - Pegasus
>>>>>>>>> Tech
>>>>>>>>> > Supply <leonardot en pegasusnet.com.ar> escribió:
>>>>>>>>> >
>>>>>>>>> > Hola Cesar,
>>>>>>>>> >
>>>>>>>>> > perdón por el error de tipeo.
>>>>>>>>> > Debería decir "devolverlo ya caRgado
>>>>>>>>> desde el
>>>>>>>>> > servidor"
>>>>>>>>> >
>>>>>>>>> > Salu2
>>>>>>>>> >
>>>>>>>>> >
>>>>>>>>> > El dom, 02-06-2013 a las 11:28 -0300, Cesar
>>>>>>>>> Gimenez
>>>>>>>>> > Lascano escribió:
>>>>>>>>> > > Gracias Leo! disculpame, a que te referís con
>>>>>>>>> > "devolverlo ya cagado
>>>>>>>>> > > desde el servidor"? a guardar los datos
>>>>>>>>> recibidos de
>>>>>>>>> > las llamadas a
>>>>>>>>> > > las apis en la base de datos? gracias x la
>>>>>>>>> ayuda.
>>>>>>>>> > saludos!!
>>>>>>>>> > >
>>>>>>>>> > >
>>>>>>>>> > > El 1 de junio de 2013 19:15, Leonardo Tadei -
>>>>>>>>> > Pegasus Tech Supply
>>>>>>>>> > > <leonardot en pegasusnet.com.ar> escribió:
>>>>>>>>> > > Cesar:
>>>>>>>>> > >
>>>>>>>>> > > Quiero volver a una cuestión
>>>>>>>>> que
>>>>>>>>> > Matías platea muy
>>>>>>>>> > > correctamente: no
>>>>>>>>> > > tiene sentido hacer varias llamadas
>>>>>>>>> AJAX en
>>>>>>>>> > un bucle, porque
>>>>>>>>> > > si te hace
>>>>>>>>> > > falta todo esto, devolvelo ya cargado
>>>>>>>>> desde
>>>>>>>>> > el servidor y
>>>>>>>>> > > listo!
>>>>>>>>> > > Más allá del problema de
>>>>>>>>> sintaxis
>>>>>>>>> > que haya, no es un
>>>>>>>>> > > uso razonable de
>>>>>>>>> > > AJAX, ya que es más lento todo esto que
>>>>>>>>> > cargar los valores
>>>>>>>>> > > desde el
>>>>>>>>> > > principio.
>>>>>>>>> > >
>>>>>>>>> > > Acordate del "principio de
>>>>>>>>> > programación KISS" !!!
>>>>>>>>> > >
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Leonardo Tadei
>>>>>>>>> leonardot en pegasusnet.com.ar
>>>>>>>>> Web: http://leonardo.tadei.com.ar
>>>>>>>>> Firma pública:
>>>>>>>>> http://www.pegasusnet.com.ar/LeonardoTadei-public.key
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Php-avanzado mailing list
>>>>>>>>> Php-avanzado en pato2.fi.mdp.edu.ar
>>>>>>>>> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Php-avanzado mailing list
>>>>>>>> Php-avanzado en pato2.fi.mdp.edu.ar
>>>>>>>> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Matias Fernando Gea
>>>>>>> matigea en gmail.com
>>>>>>> http://www.mfgea.com.ar
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Php-avanzado mailing list
>>>>>>> Php-avanzado en pato2.fi.mdp.edu.ar
>>>>>>> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Php-avanzado mailing list
>>>>> Php-avanzado en pato2.fi.mdp.edu.ar
>>>>> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Matias Fernando Gea
>>>> matigea en gmail.com
>>>> http://www.mfgea.com.ar
>>>>
>>>> _______________________________________________
>>>> Php-avanzado mailing list
>>>> Php-avanzado en pato2.fi.mdp.edu.ar
>>>> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>>>>
>>>
>>>
>>> _______________________________________________
>>> Php-avanzado mailing list
>>> Php-avanzado en pato2.fi.mdp.edu.ar
>>> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>>>
>>
>>
>>
>> --
>> Matias Fernando Gea
>> matigea en gmail.com
>> http://www.mfgea.com.ar
>>
>> _______________________________________________
>> Php-avanzado mailing list
>> Php-avanzado en pato2.fi.mdp.edu.ar
>> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>>
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://www3.fi.mdp.edu.ar/pipermail/php-avanzado/attachments/20130605/2d1c8b19/attachment-0001.html>
Más información sobre la lista de distribución Php-avanzado