Present i am using this streaming api send tweets automatically.
i am attached Example of the Code once check this is use full for you.
public string MakeStreamRequest(TwitterRequest twitterRequest, int wait)
{
string ReturnValue;
HttpWebRequest webRequest;
StreamWriter requestWriter;
string responseData = "";
string methodPath = DefineRequestPath(twitterRequest.RequestMethod.ToString());
string requestUrl = BuildRequestURL(twitterRequest.StreamApiUrlHost, twitterRequest.ResponseType, twitterRequest.UserId, methodPath);
string postData = BuildParameters(twitterRequest.APIversion, requestUrl, twitterRequest.ConsumerKey, twitterRequest.ConsumerSecret, twitterRequest.Token, twitterRequest.TokenSecret, (twitterRequest.RequestMode == RequestMode.QueryString) ? "GET" : "POST", twitterRequest.UrlParameters, methodPath);
CookieContainer cookies = new CookieContainer();
if (twitterRequest.RequestMode == RequestMode.AuthHeaders)
{
webRequest = (HttpWebRequest)WebRequest.Create(requestUrl);
}
else
{
webRequest = (HttpWebRequest)WebRequest.Create(requestUrl + postData);
}
webRequest.Method = (twitterRequest.RequestMode == RequestMode.QueryString) ? "GET" : "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
//webRequest.CookieContainer = cookies
//Eventually we might implement post data once Twitter has provided
//methods that work with post, currently there are only retrieve/get methods.
//-------------------------------------------------------------
if (twitterRequest.RequestMode == RequestMode.AuthHeaders &&
twitterRequest.UrlParameters != null)
{
string vars = postData;
if (vars.Length > 1)
{
vars = vars.Substring(1);
}
webRequest.ContentLength = vars.Length;
webRequest.Timeout = 1000000;
webRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
requestWriter = new StreamWriter(webRequest.GetRequestStream());
requestWriter.Write(vars);
requestWriter.Close();
}
try
{
using (var webResponse = (HttpWebResponse)webRequest.GetResponse())
{
System.Console.WriteLine("Response content encoding :" + webResponse.ContentEncoding);
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
using (var responseStream = new StreamReader(webResponse.GetResponseStream(), encode))
{
while (!MaxTweetApp.IsStopped)
{
try
{
ParseString(responseStream);
//System.Threading.Thread.Sleep(1000);
}
catch (Exception ex)
{
}
}
}
}
}
catch (WebException ex)
{
Console.WriteLine(ex.Message);
if (ex.Status == WebExceptionStatus.ProtocolError)
{
//-- From Twitter Docs --
//When a HTTP error (> 200) is returned, back off exponentially.
//Perhaps start with a 10 second wait, double on each subsequent failure,
//and finally cap the wait at 240 seconds.
//Exponential Backoff
if (wait < 10000)
{
wait = 10000;
}
else
{
if (wait < 240000)
{
wait = wait * 2;
}
}
}
else
{
//-- From Twitter Docs --
//When a network error (TCP/IP level) is encountered, back off linearly.
//Perhaps start at 250 milliseconds and cap at 16 seconds.
//Linear Backoff
if (wait < 16000)
{
wait += 250;
}
}
}
catch (Exception ex)
{
responseData = null;
}
ReturnValue = responseData;
return ReturnValue;
}
private void ParseString(StreamReader responseStream)
{
string content;
content = responseStream.ReadLine();
if (content != string.Empty)
{
try
{
Newtonsoft.Json.Linq.JObject jObject = JObject.Parse(content);
if (jObject["text"] != null)
{
OnStatusUpdate((string)jObject["text"], (string)jObject["user"]["screen_name"]);
}
}
catch (System.Exception ex)
{
Console.WriteLine(DateTime.Now.ToString() + " " + ex.ToString());
}
}
}