Beispiel #1
0
        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);
                    }
                }
            }
        }
Beispiel #2
0
    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();
        }
    }
Beispiel #3
0
    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();
        }
    }