コード例 #1
0
        public WeatherViewModel JsonDeserialize(string city)// Метод получения объекта json и десериализации его в модель WeatherViewModel
        {
            WeatherForecast.Forecast Forecast = new WeatherForecast.Forecast();
            WeatherCurrent.Current   Current  = new WeatherCurrent.Current();
            string apiKey = "";// Ключ доступа к http://api.openweathermap.org

            try
            {
                /* Создаем запрос к Weather Open Api, используя название города cityName  и коюч доступа apiKey для получения прогноза погоды на 5 дней*/
                HttpWebRequest apiRequest          = WebRequest.Create("http://api.openweathermap.org/data/2.5/forecast?q=" + city + "&appid=" + apiKey + "&units=metric") as HttpWebRequest;
                string         apiResponseForecast = "";

                using (HttpWebResponse response = apiRequest.GetResponse() as HttpWebResponse)// Получаем ответ от сервера и считываем его в поток StreamReader до конца
                {
                    StreamReader reader = new StreamReader(response.GetResponseStream());
                    apiResponseForecast = reader.ReadToEnd();
                }

                Forecast = JsonConvert.DeserializeObject <WeatherForecast.Forecast>(apiResponseForecast);// Десериализуем полученый ответ в формате json в объект WeatherOpenApi.CityList
            }

            catch (WebException ex)// Если получаем любой другой тип исключения, то присваиваем объекту WeatherOpenApi.CityList значение null
            {
                Forecast = null;
            }

            try
            {
                /* Создаем запрос к Weather Open Api, используя название города cityName  и ключ доступа apiKey для получения текущей погоды*/
                HttpWebRequest apiCurrent         = WebRequest.Create("http://api.openweathermap.org/data/2.5/weather?q=" + city + "&appid=" + apiKey + "&units=metric") as HttpWebRequest;// Создаем запрос к Weather Open Api, используя название города cityName  и коюч доступа apiKey
                string         apiResponseCurrent = "";

                using (HttpWebResponse response = apiCurrent.GetResponse() as HttpWebResponse)// Получаем ответ от сервера и считываем его в поток StreamReader до конца
                {
                    StreamReader reader = new StreamReader(response.GetResponseStream());
                    apiResponseCurrent = reader.ReadToEnd();
                }

                Current = JsonConvert.DeserializeObject <WeatherCurrent.Current>(apiResponseCurrent);// Десериализуем полученый ответ в формате json в объект WeatherOpenApi.CityList
            }

            catch (WebException ex)// Если получаем любой другой тип исключения, то присваиваем объекту WeatherOpenApi.CityList значение null
            {
                Current = null;
            }

            WeatherViewModel weather = new WeatherViewModel();

            weather.weatherForecast = Forecast;
            weather.weatherCurrent  = Current;
            return(weather);
        }
コード例 #2
0
ファイル: OpenWeather.cs プロジェクト: iHis/discordian
        private string FormatResults(WeatherCurrent.Current data,
                                     string location,
                                     WeatherForecast.Daily forecastData = null)
        {
            var sb = new StringBuilder()
                     .AppendFormat(">>> **{0}:** {1} {2}",
                                   location,
                                   data.Weather.Value.ToTitleCase(),
                                   WeatherIcon(data.Weather.Icon))
                     .AppendLine()

                     .AppendFormat("**Temp:** {0}°{1} **Feels Like:** {2}°{3} **Humidity:** {4}{5}",
                                   data.Temperature.Value,
                                   data.Temperature.Unit.ToUpper()[0],
                                   data.Feels_like.Value,
                                   data.Feels_like.Unit.ToUpper()[0],
                                   data.Humidity.Value,
                                   data.Humidity.Unit)
                     .AppendLine()

                     .AppendFormat("**Wind:** {0} **Speed:** {1}{2} {3}",
                                   data.Wind.Speed.Name.ToTitleCase(),
                                   data.Wind.Speed.Value,
                                   data.Wind.Speed.Unit,
                                   data.Wind.Direction.Code);

            if (!string.IsNullOrEmpty(data.Wind.Gusts))
            {
                sb.AppendFormat(" **Gusts:** {0}{1}",
                                data.Wind.Gusts,
                                data.Wind.Speed.Unit);
            }

            if (forecastData != null)
            {
                sb.AppendLine()
                .AppendFormat("**High:** {0}°{1} **Low:** {2}°{3}",
                              forecastData.Temp.Max.ToString(),
                              data.Temperature.Unit.ToUpper()[0],
                              forecastData.Temp.Min.ToString(),
                              data.Temperature.Unit.ToUpper()[0])
                .AppendLine()
                .AppendFormat("**Forecast:** {0} {1}",
                              forecastData.Weather[0].Description.ToTitleCase(),
                              WeatherIcon(forecastData.Weather[0].Icon));
            }

            return(sb.ToString().Trim());
        }