.NET 4.x C# HttpWebRequest,HttpWebResponse не обновляется ответ после 4 итерации запроса

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. У меня такая проблема, делаю запрос в цикле к API сайта, чтобы получить архив ставок по валютам. Дело в том что на 4 итерации данные от сервера перестают обновляться, постоянно одни и те же цифры приходят, хотя запрос уходит с разными параметрами даты. Мне кажется, что дело в HttpWebResponse, что он не разрывает соединение и поэтому накладка получается и данные остаются старыми. Кто сталкивался с такой проблемой?
                foreach(DateTime item in _periodRatesArray)
                {
                    url = string.Format("http://api.fixer.io/{0}?base=USD", item.ToString("yyy-MM-dd"));
                    HttpWebRequest _request = (HttpWebRequest)WebRequest.Create(url);
 
                    _request.Method = "GET";
                    _request.Accept = "application/json";
 
                    using (HttpWebResponse _response = (HttpWebResponse)_request.GetResponse())
                    {
                        using (StreamReader _reader = new StreamReader(_response.GetResponseStream()))
                        {
                            Dictionary<string, dynamic> _jsonobj = JsonConvert.DeserializeObject<Dictionary<string,dynamic>>(_reader.ReadToEnd());
                            _exchangeRates.Add(new ExchangeRates { RUB = (double)_jsonobj["rates"]["RUB"], EUR = (double)_jsonobj["rates"]["EUR"], GBP = (double)_jsonobj["rates"]["GBP"], JPY = (double)_jsonobj["rates"]["JPY"] });
                            _request.Abort();
                            _response.Close();
                        }
                    }                    

                }
На картинка показано что первых 3 запроса приходят с обновленными данными, а 4 и последующий уже не обновляются

Решение задачи: «.NET 4.x C# HttpWebRequest,HttpWebResponse не обновляется ответ после 4 итерации запроса»

textual
Листинг программы
foreach(DateTime item in _periodRatesArray)
                {
 
                    url = string.Format("http://api.fixer.io/{0}?base=USD", item.ToString("yyy-MM-dd"));
                    HttpWebRequest _request = (HttpWebRequest)WebRequest.Create(url);
                    _request.Method = "GET";
                    _request.Accept = "application/json";
                    _request.Credentials = CredentialCache.DefaultCredentials;
                    HttpWebResponse _response = null;
                    StreamReader _reader = null;
                    try
                    {
                        _response = (HttpWebResponse)_request.GetResponse();
                        _reader = new StreamReader(_response.GetResponseStream());
                        Dictionary<string, dynamic> _jsonobj = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(_reader.ReadToEnd());
                        _exchangeRates.Add(new ExchangeRates { RUB = (double)_jsonobj["rates"]["RUB"], EUR = (double)_jsonobj["rates"]["EUR"], GBP = (double)_jsonobj["rates"]["GBP"], JPY = (double)_jsonobj["rates"]["JPY"] });
 
                    }
                    finally
                    {
                        _request.Abort();  
                        if (_reader != null)
                            _reader.Dispose();
                        if (_response != null)
                            _response.Close();
                    }
 
 
                }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.818 из 5
Похожие ответы