如何使用.NET HttpWebRequest API从响应中读取HTTP头?
我的应用目前使用OAuth与Twitter API进行通信。 早在去年12月,Twitter就将OAuth的费率上限提高到每小时350个请求。 但是,我没有看到这一点。 我仍然从account / rate_limit_status方法获得150。
有人告诉我,我需要使用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
。
图片http://sofzh.miximages.com/c%23/33201085434am.png
知道我做错了什么吗?
查看原始响应文本(例如,使用Fiddler)。 如果标题不存在,则不会显示任何数量的C#代码。 :)从您所显示的内容来看,标题似乎不在响应中。
更新:当我访问: http : //twitter.com/account/rate_limit_status.xml时 ,没有X-RateLimit-Limit
标头。 但是当我访问http://twitter.com/statuses/public_timeline.xml时 ,它就在那里。 所以我认为你只需要使用不同的方法。
不过它仍然说150!
你应该简单地使用:
using (WebResponse response = request.GetResponse()) { string limit = response.Headers["X-RateLimit-Limit"]; ... }
如果这不能按预期工作,你可以看一下response.Headers并看看那里有什么。