public async Task GetDailyWeatherDataAsync() { var url = string.Format(Constants.Constants.WeatherApiUrl, Constants.Constants.CityName, Constants.Constants.NoOfDays); HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri(url)); request.ContentType = "application/json"; request.Method = "GET"; using (WebResponse response = await request.GetResponseAsync()) { using (Stream stream = response.GetResponseStream()) { StreamReader reader = new StreamReader(stream, Encoding.UTF8); string content = reader.ReadToEnd(); WeatherJsonData weatherJsonData = JsonConvert.DeserializeObject <WeatherJsonData>(content); weatherData = new WeatherData(); weatherData.RecorededDataime = DateTime.Now; currentSelectedDate = DateTime.Now; weatherData.WeeklyTempraure = new List <DailyTemperature>(); foreach (var item in weatherJsonData.list) { var dateTemperature = new DailyTemperature(); dateTemperature.City = weatherJsonData.city.name; dateTemperature.Country = weatherJsonData.city.country; dateTemperature.Date = new System.DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(item.dt); dateTemperature.ShortDate = dateTemperature.Date.ToString("dd MMM yyyy"); dateTemperature.Temperature = item.temp.day + " °C"; weatherData.WeeklyTempraure.Add(dateTemperature); } } } }
private async Task GetWeatherTask() { using (WebClient web = new WebClient()) { //IP var htmlContent = await web.DownloadStringTaskAsync(IpUrl); this.IPAddress = GetIPFromHtml(htmlContent); this.BaiDuUrl = string.Format(SBaiDuUrl, this.IPAddress); //定位所在的城市 var positionContent = await web.DownloadStringTaskAsync(this.BaiDuUrl); //this.positionData = JsonConvert.DeserializeObject<BaiduPositionData>(positionContent); this.positionData = JsonUtility.FromJson <BaiduPositionData>(positionContent); this.City = this.positionData.content.address_detail.city; this.WeatherUrl = string.Format(SWeatherUrl, this.City); var weatherdata = await web.DownloadDataTaskAsync(this.WeatherUrl); GZipStream stream = new GZipStream(new MemoryStream(weatherdata), CompressionMode.Decompress); byte[] temp = new byte[1024]; var sb = new StringBuilder(); int l = stream.Read(temp, 0, 1024); while (l > 0) { sb.Append(Encoding.UTF8.GetString(temp, 0, l)); l = stream.Read(temp, 0, 1024); } var weatherContent = sb.ToString(); //this.weatherData = JsonConvert.DeserializeObject<WeatherJsonData>(weatherContent); this.weatherData = JsonUtility.FromJson <WeatherJsonData>(weatherContent); this.m_bHasWeatherData = true; CaomaoWeatherGlobalConfig.Instance.WeatherData = this.weatherData; CaomaoWeatherGlobalConfig.Instance.City = this.positionData.content.address_detail.city; CaomaoWeatherGlobalConfig.Instance.Province = this.positionData.content.address_detail.province; this.LoadWeatherData(); stream.Close(); } }
protected override void Initialize() { base.Initialize(); if (this.Header == null) { this.Header = new CaomaoCallbackHeader("天气预报模块", this.DrawToolbar); } if (this.CardList == null) { this.CardList = new CaomaoCardList <CaomaoWeatherCard>("实时天气预报", true); } if (this.toolbar == null) { this.toolbar = new GUIStyle() { padding = new RectOffset(0, 1, 0, 0), stretchHeight = true, stretchWidth = true, fixedHeight = 0f }; } if (this.m_bHasWeatherData == false) { var data = CaomaoWeatherGlobalConfig.Instance.WeatherData; if (data != null && data.data != null && data.status == 1000 && data.IsToday(DateTime.Now.Day)) { this.m_bHasWeatherData = true; this.weatherData = data; this.LoadWeatherData(); return; } //加载天气数据 var task = this.GetWeatherTask(); } }