If you ever want to send updates to Twitter from C# it fairly easy to do. Recently, we added the option to send a tweet when someone registers for our upcoming dotNed user group meeting. Below is the client code.
using System; using System.Web; using System.Net; using System.IO; namespace Dotned.UI.Framework { public class TwitterClient
{ public string Username { get; set; }
public string Password { get; set; }
public Exception Error { get; set; } private string _twitterUpdateUrl = "http://twitter.com/statuses/update.json";
public TwitterClient(string userName, string password)
{ this.Username = userName; this.Password = password; }
public void SendMessage(string message)
{ try { HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(_twitterUpdateUrl);
request.Credentials = new NetworkCredential(this.Username, this.Password);
SetRequestParams(request);
string post = string.Format("status={0}", HttpUtility.UrlEncode(message));
using (Stream requestStream = request.GetRequestStream()) { using (StreamWriter writer = new StreamWriter(requestStream))
{ writer.Write(post);
}
}
WebResponse response = request.GetResponse();
string content; using (Stream responseStream = response.GetResponseStream()) { using (StreamReader reader = new StreamReader(responseStream))
{ content = reader.ReadToEnd();
}
}
}
catch (Exception ex) { Error = ex;
}
}
private static void SetRequestParams(HttpWebRequest request)
{ System.Net.ServicePointManager.Expect100Continue = false; request.Timeout = 50000;
request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; }
}
}
It is important to notice that you need to set a static flag in the ServicePointManager. Otherwise, Twitter will reply with error 417 – Expectation Failed. Here’s an example that shows how to use this class:
1: TwitterClient client = new TwitterClient("__Sander", "[not telling you of course...]");
2: client.SendMessage("Testing my twitter client code.");
Leave a Comment