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

C# 如何使用.NET HttpWebRequest API从响应中读取HTTP头?,c#,twitter,oauth,httpwebresponse,C#,Twitter,Oauth,Httpwebresponse,我的应用程序目前使用OAuth与Twitter API通信。早在12月,Twitter就将OAuth的速率限制提高到每小时350个请求。然而,我没有看到这一点。我仍然从这个方法中得到150分 我被告知需要使用X-RateLimit-LimitHTTP头来获取新的费率限制。但是,在我的代码中,我看不到该标题 这是我的密码 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(newURL); request.Method = "GET

我的应用程序目前使用OAuth与Twitter API通信。早在12月,Twitter就将OAuth的速率限制提高到每小时350个请求。然而,我没有看到这一点。我仍然从这个方法中得到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();
    }
}
如果我检查
响应
,我可以看到它有一个
头的属性
,并且有16个头。但是,我在列表中没有
X-RateLimit-Limit


(来源:)


知道我做错了什么吗?

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

更新:当我转到时:没有
X-RateLimit-Limit
标题。但当我去的时候,它就在那里。所以我认为你只需要使用一种不同的方法


不过还是写着150

您应该能够使用:

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

如果这不符合预期,您可以查看response.Headers并查看其中的内容。

我对twitter API一无所知,但X-RateLimit-Limit头不应该用于请求,而不是收到wia响应吗?@Yossarian,否;它应该在响应中:@Yossarian-the
请求
只有两个标题:Content-Type和Host。这些是请求头。
X-RateLimit-Limit
来自Twitter,所以我假设它会出现在回复中。谢谢Craig。问题在于
费率限制\u状态
不受费率限制。我正在使用的方法也不是(即
access\u-token
OAuth方法)。如果我使用一种速率有限的方法,比如
public\u timeline
,它就在那里。因此,Twitter似乎只发送那些实际受速率限制的方法的标题值。如果响应不是
200OK
,它就不起作用了。如果服务器出现
550内部服务器错误
404未找到
,应用程序将在
GetResponse
上出现
异常