Escrito por
Martin Gonzalez el Domingo 07 de Diciembre de 2008 a las 15:46hs
Para mandar las peticiones a la API tenemos que usar la extensión cURL, mientras que para procesar los datos vamos a emplear XML, valiéndonos del SimpleXML con el que cuenta PHP5.
Así es como debemos hacer una petición GET usando cURL:
cURL hace la petición por medio de HTTP, lo único que tenemos que hacer nosotros es ocuparnos de su resultado que es el valor $http_status. En caso de que sea distinto de 200, algo anduvo mal. De acuerdo al diseño que le hayamos dado a nuestra aplicación, lo más recomendable es que guardemos el valor de $http_status para poder mostrar un mensaje de error más adecuado.
Ahora bien, si nos interesa saber cuáles fueron los últimos 20 estados en el friend_timeline de nuestro usuario, podemos definir una función como esta:
Como en la petición aclaramos que queríamos la respuesta en XML, por medio de la función simplexml_load_string() podemos obtener un objeto (en esta ocasión, $replies) que represente a este mismo XML. Este objeto va a ser un array de cómo máximo 20 elentos, cada uno de los cual habrá de contener esta información:
Como podemos ver, cada tweet contiene toda la información requerida, con lo que nos evita realizar peticiones extra.
La mayor parte de las peticiones a la API se manejan de un modo semejante, el único cambio se da en la estructura XML. De todas formas, podemos saber el valor $http_status sin necesidad de tener que interpretar el XML que obtengamos.
Solamente hay dos excepciones que debemos considerar: se trata de crear un nuevo estado o mandar un mensaje directo. Ambas acciones necesitan que hagamos un POST. En el primer caso, tendríamos lo siguiente:
Lo que tenemos que tener en cuenta antes de mandar el mensaje es que nos conviene codificarlo con urlencode(), para evitar dificultades en caso de que éste lleve una URL. Lo que también puede servir es añadir al mensaje un filtro para detectar URLs y las acorte mediante un servicio extra.
Bueno, esto es todo por ahora. Espero que les haya servido!