C# 401来自使用C的Twitter流API的错误#

C# 401来自使用C的Twitter流API的错误#,c#,api,twitter,stream,http-status-code-401,C#,Api,Twitter,Stream,Http Status Code 401,当我尝试将其转换为流api时,我得到了401:“”。我真的很感激任何帮助。见下面的代码: HttpWebRequest请求=null; 字符串oauth_consumer_key=“xxxxxxxxxxxx”; 字符串oauth_consumer_secret=“xxxxxxxxxxxxxx”; 字符串oauth_token=“XXXXXXXXXXXXXXXXXXXXXX”; 字符串oauth_token_secret=“XXXXXXXXXXXXXXXXXXXXXXXXX”; 字符串oauth

当我尝试将其转换为流api时,我得到了401:“”。我真的很感激任何帮助。见下面的代码:

HttpWebRequest请求=null; 字符串oauth_consumer_key=“xxxxxxxxxxxx”; 字符串oauth_consumer_secret=“xxxxxxxxxxxxxx”; 字符串oauth_token=“XXXXXXXXXXXXXXXXXXXXXX”; 字符串oauth_token_secret=“XXXXXXXXXXXXXXXXXXXXXXXXX”; 字符串oauth_version=“1.0”; 字符串oauth_signature_method=“HMAC-SHA1”; string oauth_nonce=Convert.ToBase64String(new ascienceoding().GetBytes(DateTime.Now.Ticks.ToString()); TimeSpan TimeSpan=DateTime.UtcNow—新的日期时间(1970,1,1,0,0,0,DateTimeKind.Utc); 字符串oauth_timestamp=Convert.ToInt64(timeSpan.TotalSeconds).ToString(); Encoding encoder=System.Text.Encoding.GetEncoding(“utf-8”); int退避=250; string line=string.Empty; 尝试 { 字符串参数=this.GetQuery(模板); string baseFormat=“oauth_consumer_key={0}&oauth_nonce={1}&oauth_signature_method={2}”+ “&oauth_timestamp={3}&oauth_token={4}&oauth_version={5}”; &磁道={6}” string baseString=string.Format(baseFormat, oauth_消费者_密钥, 现在, oauth_签名_方法, oauth_时间戳, oauth_代币, oauth_版本, Uri.EscapeDataString(参数) ); baseString=string.Concat(“POST&”,Uri.EscapeDataString(this.Datasource),“&”,Uri.EscapeDataString(baseString)); string compositeKey=string.Concat(Uri.EscapeDataString(oauth_consumer_secret),“&”,Uri.EscapeDataString(oauth_token_secret)); 字符串oauth_签名; 使用(HMACSHA1 hasher=newhmacsha1(ascienceoding.ASCII.GetBytes(compositeKey))) { oauth_签名=Convert.ToBase64String( ComputeHash(ascienceoding.ASCII.GetBytes(baseString)); } //创建请求头 字符串headerFormat=“OAuth OAuth\u consumer\u key=\“{0}\”,OAuth\u nonce=\“{1}\”,“+ “oauth\u签名=\”{2}\”,oauth\u签名\方法=\”{3}\,”+ “oauth\u时间戳=\”{4}\”+ “oauth_令牌=\”{5}\”+ “oauth\u版本=\”{6}\”; string authHeader=string.Format(headerFormat, Uri.EscapeDataString(oauth_消费者_密钥), Uri.EscapeDataString(oauth_nonce), Uri.EscapeDataString(oauth_签名), EscapeDataString(oauth_签名_方法), Uri.EscapeDataString(oauth_时间戳), Uri.EscapeDataString(oauth_令牌), EscapeDataString(oauth_版本) ); ServicePointManager.Expect100Continue=false; //stringpostbody=string.Format(“track={0}”,参数); string postBody=“track=“+Uri.EscapeDataString(参数); request=(HttpWebRequest)WebRequest.Create(this.Datasource+“?”+postBody); 添加(“授权”,authHeader); request.Method=“POST”; request.ContentType=“application/x-www-form-urlencoded”; request.PreAuthenticate=true; request.AllowWriteStreamBuffering=true; 使用(WebResponse=request.GetResponse()) { 使用(StreamReader=newstreamreader(response.GetResponseStream()) { string responseData=new StreamReader(response.GetResponseStream()).ReadToEnd(); //我们已成功连接,因此请重置twitter回退时间 } 捕获(WebException wex) { if(wex.Status==WebExceptionStatus.ProtocolError) { /*根据twitter api * *当返回HTTP错误(>200)时,以指数方式退出。 *也许从10秒的等待开始,每次失败后加倍, *最后将等待时间限制在240秒。 * *指数退避 */ if(后退
FilteredStream stream = new FilteredStream();
// Create a Token to access Twitter
IToken token = new Token("userKey", "userSecret", "consumerKey", "consumerSecret");
// Adding Tracks filters
stream.AddTrack("HelloMartha");
stream.AddTrack("TrackNumber2!");
// Write the Text of each Tweet in the Console
stream.StartStream(token, x => Console.WriteLine(x.Text));