Luego de una larga ausencia (que no se repetirá hasta que se repita) dejo un pequño ejemplo autodescriptivo sobre cómo actualizar y recuperar el timeline de Twitter con nuestro querido .net
Es un gran ejemplo sobre REST y las facilidades de System.Net y de LinqToXML, enjoy
using System; using System.Linq; using System.Net; using System.Text; using System.Xml.Linq; namespace twitterUpdater { /// <summary> /// Ejemplo sobre cómo actualizar twitter y leer el timeline desde .net /// http://apiwiki.twitter.com/Twitter-API-Documentation /// </summary> class Program { /// <summary> /// Nuestras credenciales de twitter /// </summary> public NetworkCredential Credential { get { return new NetworkCredential("leomicheloni", "mi_password"); } } static void Main(string[] args) { var p = new Program(); //Actualizamos nuestro estado p.Update("puedo tuitearte?"); //traemos el timeline p.GetTimeLine(); Console.ReadLine(); } public void Update(string status) { var url = "http://twitter.com/statuses/update.xml?status={0}"; var request = HttpWebRequest.Create(String.Format(url, status)); request.ContentLength = 0; //el largo del contenido HTTP es cero porque todo lo necesario va en la url request.ContentType = "application/x-www-form-urlencoded"; ; request.Credentials = Credential; //nuestras credenciales de twitter request.Method = "POST"; //para enviar usamos el verbo POST //simplemente enviamos el request var response = request.GetResponse() as HttpWebResponse; if (response.StatusCode != HttpStatusCode.OK && response.StatusCode != HttpStatusCode.Continue) throw new ApplicationException(response.StatusCode.ToString()); } /// <summary> /// Recupera la actividad de las personas que seguimos y de nosotros mismos /// </summary> public void GetTimeLine() { var url = "http://twitter.com/statuses/friends_timeline.xml?count=3"; var request = HttpWebRequest.Create(url); request.ContentLength = 0; request.ContentType = "application/x-www-form-urlencoded"; ; request.Credentials = Credential; request.Method = "GET"; //en este caso el verbo HTTP es GET var response = request.GetResponse() as HttpWebResponse; if (response.StatusCode != HttpStatusCode.OK && response.StatusCode != HttpStatusCode.Continue) throw new ApplicationException(response.StatusCode.ToString()); //recuperamos la respuesta var stream = response.GetResponseStream(); var length = response.ContentLength; var buffer = new byte[length]; stream.Read(buffer, 0, (int)length); var xml = Encoding.UTF8.GetString(buffer); //la respuesta es un xml como se especifica en http://apiwiki.twitter.com/Twitter-REST-API-Method%3A-statuses-friends_timeline var doc = XDocument.Parse(xml); var statuses = from item in doc.Document.Element("statuses").Nodes().ToArray() select (item as XElement); foreach (var status in statuses) { Console.WriteLine(status.Element("user").Element("name").Value + " = " + status.Element("text").Value); } } } }
2 comentarios:
great!
Tengo una pregunta, intenté correr este programa pero no pude obtener el timeline completo(es decir response) viene incompleto, y no bien formado. algunos tag sin cerrar especificamente. Cuando intenta parsear el xml salta el error,alguna idea ? Gracias por compartir esto.
Publicar un comentario