2010-03-03 13 views
7

Attualmente la mia app utilizza OAuth per comunicare con l'API di Twitter. A dicembre, Twitter ha aumentato il limite tariffario per OAuth a 350 richieste all'ora. Tuttavia, non sto vedendo questo. Sto ancora ricevendo 150 dal metodo account/rate_limit_status.Come leggere l'intestazione HTTP dalla risposta utilizzando l'API .NET HttpWebRequest?

Mi è stato detto che avevo bisogno di usare l'intestazione HTTP X-RateLimit-Limit per ottenere il nuovo limite di velocità. Tuttavia, nel mio codice, non vedo quell'intestazione.

Ecco il mio codice ...

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(); 
    } 
} 

Se ispezionare il response, posso vedere che ha una proprietà per Headers, e che ci sono 16 le intestazioni. Tuttavia, non ho X-RateLimit-Limit nell'elenco.

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

Qualsiasi idea di cosa sto facendo male?

+1

Quale tema stai usando? :) –

+0

Non so nulla dell'API di Twitter, ma non dovrebbe l'intestazione X-RateLimit-Limit utilizzata nella richiesta, non ricevuta risposta wia? – nothrow

+0

il tema "alterna moria". –

risposta

1

Esamina il testo di risposta non elaborato (ad es. Con Fiddler). Se l'intestazione non è presente, nessuna quantità di codice C# la farà apparire. :) Da quello che hai mostrato, sembra che l'intestazione non sia nella risposta.

Aggiornamento: Quando vado a: http://twitter.com/account/rate_limit_status.xml non c'è l'intestazione X-RateLimit-Limit. Ma quando vado a http://twitter.com/statuses/public_timeline.xml, è lì. Quindi penso che tu debba solo usare un metodo diverso.

Dice ancora 150, però!

+2

Grazie Craig. Il problema è che il 'rate_limit_status' non è a tasso limitato. Né era il metodo che stavo usando (il metodo OAuth 'access_token'). Se utilizzo un metodo limitato in frequenza, come il 'public_timeline', è lì. Sembra quindi che Twitter invii solo quei valori di intestazione per i metodi che sono effettivamente limitati. –

+0

Questo ha quasi senso! –

9

Dovreste semplice essere in grado di utilizzare:

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

Se questo non funziona come previsto, si può fare un orologio sul response.Headers e vedere cosa c'è dentro.

+0

Ehm, l'ha già fatto. C'è uno screenshot di questo nel post ... –

+1

Ahh, non ho potuto vedere il collegamento a causa di Websense sul firewall dell'azienda :( –

Problemi correlati