2010-03-03 99 views
7

我的应用程序当前使用OAuth与Twitter API进行通信。去年12月,Twitter将OAuth的费率限制提高到每小时350个请求。但是,我没有看到这一点。我仍然从account/rate_limit_status方法得到150。如何使用.NET HttpWebRequest API从响应中读取HTTP头?

有人告诉我需要使用X-RateLimit-Limit HTTP头来获得新的速率限制。但是,在我的代码中,我没有看到该标题。

这里是我的代码...

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(newURL); 
request.Method = "GET"; 
request.ServicePoint.Expect100Continue = false; 
request.ContentType = "application/x-www-form-urlencoded"; 

using (WebResponse response = request.GetResponse()) 
{ 
    using (StreamReader reader = new StreamReader(response.GetResponseStream())) 
    { 
     responseString = reader.ReadToEnd(); 
    } 
} 

如果我检查response,我可以看到,它有一个属性为Headers,并有16头。但是,我没有列出X-RateLimit-Limit

Image http://img10.yfrog.com/img10/5997/33201085434am.png

任何想法,我做错了什么?

+1

你使用什么主题? :) –

+0

我不知道关于twitter API的任何内容,但不应该在请求中使用X-RateLimit-Limit标题,而不是收到wia响应? – nothrow

+0

“moria alternate”主题。 –

回答

1

查看原始响应文本(例如,使用Fiddler)。如果标题不存在,则不会出现大量的C#代码。 :)从你显示的内容看来,标题看起来并不在响应中。

更新:当我去:http://twitter.com/account/rate_limit_status.xml没有X-RateLimit-Limit标题。但是当我去http://twitter.com/statuses/public_timeline.xml,它在那里。所以我认为你只需要使用不同的方法。

它仍然说150,但!

+2

谢谢克雷格。问题是'rate_limit_status'不受速率限制。我使用的方法也没有('access_token' OAuth方法)。如果我使用速率有限的方法,比如'public_timeline',它就在那里。所以看起来Twitter只发送那些实际速率有限的方法的头值。 –

+0

这几乎是有道理的! –

9

你应该简单的可以使用:

using (WebResponse response = request.GetResponse()) 
{ 
    string limit = response.Headers["X-RateLimit-Limit"]; 
    ... 
} 

如果没有按预期工作,你可以做response.Headers手表,看看里面有什么了。

+0

恩,他已经做了那个手表。在帖子中有一个截图... –

+1

啊,我无法看到公司防火墙上的Websense链接:( –