Twitter und C#

Momentan scheint Twitter wieder in aller Munde zu sein – zumindest haben viele Freunde und Bekannte in den letzten Wochen einen Twitter Account erstellt und sind nun fröhlich am twittern.

Grund genug auszuprobieren, wie schwer oder wie einfach es ist einen Tweet per C# zu senden. Hierfür muss natürlich zunächst ein Test-Account erstellt werden. In diesem Fall lautet der Username passenderweise BlaBlubBlog. Twitter stellt externen Programmen eine API zu Verfügung, die unter http://apiwiki.twitter.com/ dokumentiert ist. Die API basiert auf REST und kann somit ohne weitere Hilfsmittel per C# angesprochen werden.

Zunächst ist es erforderlich eine Anmeldung per HTTP Basic Authentication durchzuführen. Hierfür ist die Klasse HttpWebRequest erforderlich, an die der Benutzername und das Passwort übergeben wird.

HttpWebRequest request = WebRequest.Create(twitterUpdateUrl) as HttpWebRequest;
request.Proxy = HttpWebRequest.DefaultWebProxy;
request.Credentials = new NetworkCredential("BlaBlubBlog", "<PASSWORD>");

Die Url um einen Tweet abzuschicken bzw. den Status zu setzen lautet http://twitter.com/statuses/update.xml. Nachdem der gewünschte Text per UrlEncode() Methode für das Senden vorbereitet wurde, wird der ContentType und die Art der Datenübertragung – in diesem Fall POST – gesetzt. Weiterhin werden die nötigen Parameter erstellt, zum einen der Text selbst und zum anderen die Quelle oder Anwendung, von der aus der Tweet gesendet wurde.

twitterText = HttpUtility.UrlEncode(twitterText);

request.Method = "POST";

request.ContentType = "application/x-www-form-urlencoded";
string param = "status=" + twitterText;
string sourceParam = "&source=BlaBlubBlog";
request.ContentLength = param.Length + sourceParam.Length;

Nachdem alle Vorbereitungen abgeschlossen sind, können die Daten nun per StreamWriter geschrieben werden. Mt Hilfe der HttpWebResponse Klasse werden die Daten an Twitter gesendet und die Rückantwort ausgewertet. Diese kann als Xml-Dokument geladen und verarbeitet werden. Im Node Status befindet sich die Meldung bezüglich des abgesetzten Tweet.

StreamWriter stOut = new StreamWriter(request.GetRequestStream(), System.Text.Encoding.ASCII);
stOut.Write(param);
stOut.Write(sourceParam);
stOut.Close();

using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
    StreamReader reader = new StreamReader(response.GetResponseStream());

    XmlDocument doc = new XmlDocument();
    doc.Load(reader);

    XmlNode node = doc.SelectSingleNode("status");
}

War die Übertragung erfolgreich, erscheint das Tweet umgehend auf der Hauptseite des Benutzers.

Tweet

Dieses Beispiel hat gezeigt wie einfach es ist per C# mit Twitter zu kommunizieren. Natürlich sind noch viele Dinge mehr möglich, die aber den Rahmen dieses einfachen Beispiels sprengen würden.

Das Beispielprojekt gibt es zum Download unter der Url
http://www.veloursnebel.de/Code/TwitterClient.zip

2 thoughts on “Twitter und C#

  1. Pingback: HowTo: Twittern mit C# | Code-Inside Blog

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>