2010-03-03 5 views
7

내 앱은 현재 OAuth를 사용하여 Twitter API와 통신합니다. 지난 12 월에 트위터는 OAuth의 속도 제한을 시간당 350 건의 요청으로 올렸습니다. 그러나, 나는 이것을 보지 않고있다. 나는 여전히 account/rate_limit_status 방법에서 150을 얻고있다..NET HttpWebRequest API를 사용하여 응답에서 HTTP 헤더를 읽는 방법?

새로운 속도 제한을 얻으려면 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을 가지고 있지 않습니다.

Image http://img10.yfrog.com/img10/5997/33201085434am.png

내가 잘못하고있는 중이 야 어떤 생각?

+1

어떤 테마를 사용하고 있습니까? :) –

+0

트위터 API에 대해 아는 것이 없지만 요청에 X-RateLimit-Limit 헤더를 사용해서는 안됩니다. – nothrow

+0

"moria alternate"테마. –

답변

1

원시 응답 텍스트 (예 : 피들러 포함)를 확인하십시오. 헤더가 없으면 C# 코드가 나타나지 않습니다. :) 당신이 보여준 바로는, 헤더가 응답에없는 것 같습니다.

업데이트 : http://twitter.com/account/rate_limit_status.xml에 갈 때 X-RateLimit-Limit 헤더가 없습니다. 하지만 http://twitter.com/statuses/public_timeline.xml에 가면 거기에 있습니다. 그래서 저는 다른 방법을 사용해야한다고 생각합니다.

그래도 여전히 150이라고 표시됩니다.

+2

고마워요, 크레이그. 문제는'rate_limit_status'가 속도 제한이 없다는 것입니다. 어느 메소드도 사용하지 않았습니다 ('access_token' OAuth 메소드). 'public_timeline'처럼 속도가 제한된 메소드를 사용한다면, 거기에 있습니다. 그래서 트위터는 실제로 속도가 제한적인 방법에 대해서만 헤더 값을 전송하는 것 같습니다. –

+0

거의 이해가됩니다! –

9

당신은 간단하게 사용할 수 있어야합니다 :

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

을 그 예상대로, 당신은 response.Headers에 시계를하고 거기에 무엇을 볼 수 있습니다 작동하지 않는 경우.

+0

음, 그는 이미 그 시계를했습니다. 게시물의 스크린 샷이 있습니다 ... –

+1

Ahh, 회사 방화벽의 Websense 때문에 링크를 볼 수 없습니다. –

관련 문제