.NET 4.x C# HttpWebRequest,HttpWebResponse не обновляется ответ после 4 итерации запроса
Формулировка задачи:
Здравствуйте. У меня такая проблема, делаю запрос в цикле к API сайта, чтобы получить архив ставок по валютам. Дело в том что на 4 итерации данные от сервера перестают обновляться, постоянно одни и те же цифры приходят, хотя запрос уходит с разными параметрами даты. Мне кажется, что дело в HttpWebResponse, что он не разрывает соединение и поэтому накладка получается и данные остаются старыми. Кто сталкивался с такой проблемой?
На картинка показано что первых 3 запроса приходят с обновленными данными, а 4 и последующий уже не обновляются
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(); } } }
Решение задачи: «.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(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д