[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