/// <summary> /// Получение рекомендации. /// </summary> async private Task DoReq() { if (location != null) { string safix = $"&ll={GetDouble(location.Latitude)},{GetDouble(location.Longitude)}&categoryId=4deefb944765f83613cdba6e,4bf58dd8d48988d181941735,5642206c498e4bfca532186c&limit=15&radius=20000&locale=ru"; try { PlacesInfo placesInfo = await GetPlacesRecomendation(recUrl + safix); if (placesInfo.meta.code == 200) { indicator.IsRunning = false; MakePlacesList(placesInfo); } else { await DisplayAlert("Ошибка", $"Код: {placesInfo.meta.code}", "OK"); } } catch (WebException ex) { await DisplayAlert("Ошибка", "Проблемы с интернетом", "OK"); } catch (Exception) { await DisplayAlert("Ошибка", "Произошла непредвиденная ошибка", "OK"); } finally { indicator.IsRunning = false; } } }
/// <summary> /// Получение списка мест. /// </summary> /// <param name="placesInfo"></param> private void MakePlacesList(PlacesInfo placesInfo) { foreach (var groups in placesInfo.response.groups) { foreach (var items in groups.items) { Place newPlace = new Place(items.venue, MainPage.CurrentTrip.Id); places.Add(newPlace); } } }
/// <summary> /// Запрос на получение списка рекомендаций. /// </summary> async private Task <PlacesInfo> GetPlacesRecomendation(string url) { HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url); HttpWebResponse httpWebResponse = (HttpWebResponse)await httpWebRequest.GetResponseAsync(); string response; using (StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream())) { response = streamReader.ReadToEnd(); } PlacesInfo placesInfo = JsonConvert.DeserializeObject <PlacesInfo>(response); return(placesInfo); }