如何使用.NET HttpWebRequest API从响应中读取HTTP头?

Rya*_*ord 9 c# twitter oauth httpwebresponse

我的应用目前使用OAuth与Twitter API进行通信.早在去年12月,Twitter就将OAuth的费率上限提高到每小时350个请求.但是,我没有看到这一点.我仍然从account/rate_limit_status方法获得150 .

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

这是我的代码......

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我检查response,我可以看到它有一个属性Headers,并有16个标题.但是,我没有X-RateLimit-Limit在列表中.

图片http://img10.yfrog.com/img10/5997/33201085434am.png

知道我做错了什么吗?

Rus*_*rke 12

你应该简单地使用:

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

如果这不能按预期工作,你可以看一下response.Headers并看看那里有什么.


Cra*_*ntz 2

查看原始响应文本(例如,使用 Fiddler)。如果标头不存在,那么再多的 C# 代码也无法让它出现。:) 从您所显示的内容来看,标头似乎不在响应中。

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

但它仍然显示 150!

  • 谢谢克雷格。问题是“rate_limit_status”不受速率限制。我使用的方法(“access_token” OAuth 方法)也不是。如果我使用速率受限的方法,例如“public_timeline”,它就在那里。因此,Twitter 似乎只发送那些实际上受到速率限制的方法的标头值。 (2认同)