2017-04-12 2 views
0

Je fais un travail d'intégration avec une API qui renvoie un HttpStatusCode 429 lorsque vous avez atteint votre limite quotidienne. Toutefois, le code Enum HttpStatusCode de l'objet de réponse Web ne contient pas ce code. Est-ce que quelqu'un peut me dire comment je peux vérifier ce code de réponse?Code d'état HttpWebResponse 429

Voici un code pour montrer ce que je suis en train d'accomplir:

try 
{ 
    //do something 
} 
catch (WebException webExp) 
{ 
    var response = (HttpWebResponse) webExp.Response; 

    //here I want to check status code for too many requests but it is not in the enum. 
    if (response.StatusCode == HttpStatusCode.TooManyRequests) throw webExp; 
} 
+0

Veuillez poster votre code afin que nous puissions suggérer une approche. En ce moment nous n'avons aucune idée de comment vous appelez l'API. – Lorien

+0

Difficile d'aider sans un échantillon de code; avez-vous regardé [Comment retourner 429] (http://stackoverflow.com/questions/22636602/how-to-return-http-429) et a travaillé en arrière. –

+0

Excuses, j'ai ajouté un échantillon de code pour aider à expliquer ce que je suis en train de faire. – kcis8rm

Répondre

0

J'ai eu le même problème, vous pouvez lire la réponse et ensuite chercher 429 ou trop de chaîne de demandes:

string responseStr = ""; 
Stream responseStream = webEx.Response.GetResponseStream(); 
if (responseStream != null) 
{ 
    using (StreamReader sr = new StreamReader(responseStream)) 
    { 
     responseStr = sr.ReadToEnd(); 
    } 
} 

if (responseStr.Contains("429") || responseStr.Contains("Too many requests")) 
Console.WriteLine("Is 429 WebException ");