Как читать HTTP-заголовке ответа using.NET API для класса HttpWebRequest?


В настоящее время мое приложение использует OAuth для связи с API Twitter. Еще в декабре Twitter повысил лимит скорости для OAuth до 350 запросов в час. Однако я этого не вижу. Я все еще получаю 150 от метода account/rate_limit_status .

Мне сказали, что мне нужно использовать заголовок HTTP X-RateLimit-Limit, чтобы получить новый предел скорости. Однако в моем коде я не вижу этого заголовка.

Вот мой код...

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://img10.yfrog.com/img10/5997/33201085434am.png

Есть идеи, что я делаю не так?
2 9

2 ответа:

Посмотрите на необработанный текст ответа (например, с помощью 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"];
  ...
}

Если это не работает, как ожидалось, вы можете сделать наблюдение за реакцией.Посмотри, что там внутри.