@LebedevStr

Как сделать повтор запроса webrequest при ошибке (C#)?

req         = (HttpWebRequest) WebRequest.Create(get_url);
   req.Timeout = 1500;
   resp        = (HttpWebResponse) req.GetResponse();
   sr          = new StreamReader(resp.GetResponseStream(), Encoding.GetEncoding("utf-8"));
   content     = sr.ReadToEnd();
   sr.Close();


Как сделать цикл принудительного запроса, если код ответа не равен 200?
Иногда по ссылке НЕ отдается содержимое (API перегружен) - но при повтрном запросе отдается валидный ответ.

Спасибо
  • Вопрос задан
  • 143 просмотра
Решения вопроса 1
1. Просто в цикле повторяешь запросы с некоторой периодичностью
2. Вместо WebRequest лучше использовать HttpClient
3. Чтобы не пилить велосипеды - используйте Polly
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
samodum
@samodum
Какой вопрос - такой и ответ
while(True){
    try{
      здесь твои запросы
    }
    catch{
       ...
    }
}
Ответ написан
@hello_my_name_is_dany
Backend Developer (Node.js, PHP, C#)
Через рекурсию, как вариант

async Task<string> SendRequestUntilSuccess(string url)
{
    try	
    {
        HttpResponseMessage response = await client.GetAsync(url);
        response.EnsureSuccessStatusCode();
        return response.Content.ReadAsStringAsync();
    }
    catch(HttpRequestException e)
    {
        return SendRequestUntilSuccess(url);
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы