[Php-avanzado] consulta cURL

Cesar Gimenez Lascano cesargimenezlascano en gmail.com
Mar Jun 4 20:08:01 ART 2013


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
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://www3.fi.mdp.edu.ar/pipermail/php-avanzado/attachments/20130604/da07241a/attachment-0001.html>


Más información sobre la lista de distribución Php-avanzado