C# 如何使用.NET HttpWebRequest API从响应中读取HTTP头?
我的应用程序目前使用OAuth与Twitter API通信。早在12月,Twitter就将OAuth的速率限制提高到每小时350个请求。然而,我没有看到这一点。我仍然从这个方法中得到150分 我被告知需要使用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
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
上出现异常
。