[Php-avanzado] consulta cURL
Cesar Gimenez Lascano
cesargimenezlascano en gmail.com
Mie Jun 5 10:05:42 ART 2013
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/e3e55829/attachment-0001.html>
Más información sobre la lista de distribución Php-avanzado