[Php-avanzado] consulta cURL
Matias Gea
matigea en gmail.com
Mar Jun 4 20:18:21 ART 2013
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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://www3.fi.mdp.edu.ar/pipermail/php-avanzado/attachments/20130604/738e11c4/attachment-0001.html>
Más información sobre la lista de distribución Php-avanzado