目录
一 设计原型
二 后台源码
一 设计原型
二 后台源码
using Newtonsoft.Json;
using System.Net;
using System.Text;
namespace 获取天气预报
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string url = "http://t.weather.sojson.com/api/weather/city/101091101";
string content = GetRemoteData(url);
WaterData waterData = JsonConvert.DeserializeObject<WaterData>(content);
if (waterData != null)
{
date.Text = waterData.date;
time.Text = waterData.time;
List<City> cities = new List<City>();
cities.Add(waterData.cityInfo);
city.DataSource = cities;
datas.DataSource = waterData.data.forecast;
List<Yesterday> Yesterdays = new List<Yesterday>();
Yesterdays.Add(waterData.data.yesterday);
yesterday.DataSource = Yesterdays;
}
}
/// <summary>
/// 请求类
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
private static string GetRemoteData(string url)
{
string HtmlCode = "";
HttpWebRequest wrequest = (HttpWebRequest)WebRequest.Create(url);
try
{
HttpWebResponse wresponse = (HttpWebResponse)wrequest.GetResponse();
Stream stream = wresponse.GetResponseStream();
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
HtmlCode = reader.ReadToEnd();
reader.Close();
wresponse.Close();
}
catch
{
HtmlCode = "Error";
}
return HtmlCode;
}
}
public class WaterData
{
public string message { get; set; }
public int status { get; set; }
public string date { get; set; }
public string time { get; set; }
public City cityInfo { get; set; }
public Data data { get; set; }
}
public class City
{
public string city { get; set; }
public string citykey { get; set; }
public string parent { get; set; }
public string updateTime { get; set; }
}
public class Data
{
public string shidu { get; set; }
public double pm25 { get; set; }
public double pm10 { get; set; }
public string quality { get; set; }
public string wendu { get; set; }
public string ganmao { get; set; }
public List<ForeCast> forecast { get; set; }
public Yesterday yesterday { get; set; }
}
public class ForeCast
{
public string date { get; set; }
public string high { get; set; }
public string low { get; set; }
public string ymd { get; set; }
public string week { get; set; }
public string sunrise { get; set; }
public string sunset { get; set; }
public int aqi { get; set; }
public string fx { get; set; }
public string fl { get; set; }
public string type { get; set; }
public string notice { get; set; }
}
public class Yesterday
{
public string date { get; set; }
public string high { get; set; }
public string low { get; set; }
public string ymd { get; set; }
public string week { get; set; }
public string sunrise { get; set; }
public string sunset { get; set; }
public string aqi { get; set; }
public string fx { get; set; }
public string fl { get; set; }
public string type { get; set; }
public string notice { get; set; }
}
}
设计器自动生成源码:
namespace 获取天气预报
{
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
datas = new DataGridView();
button1 = new Button();
label1 = new Label();
date = new TextBox();
time = new TextBox();
label2 = new Label();
city = new DataGridView();
yesterday = new DataGridView();
((System.ComponentModel.ISupportInitialize)datas).BeginInit();
((System.ComponentModel.ISupportInitialize)city).BeginInit();
((System.ComponentModel.ISupportInitialize)yesterday).BeginInit();
SuspendLayout();
//
// datas
//
datas.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
datas.Location = new Point(26, 103);
datas.Name = "datas";
datas.RowHeadersWidth = 51;
datas.Size = new Size(1443, 406);
datas.TabIndex = 0;
//
// button1
//
button1.Location = new Point(666, 717);
button1.Name = "button1";
button1.Size = new Size(94, 29);
button1.TabIndex = 1;
button1.Text = "获取天气预报";
button1.UseVisualStyleBackColor = true;
button1.Click += button1_Click;
//
// label1
//
label1.AutoSize = true;
label1.Location = new Point(26, 16);
label1.Name = "label1";
label1.Size = new Size(39, 20);
label1.TabIndex = 2;
label1.Text = "日期";
//
// date
//
date.Location = new Point(78, 13);
date.Name = "date";
date.Size = new Size(267, 27);
date.TabIndex = 3;
//
// time
//
time.Location = new Point(78, 63);
time.Multiline = true;
time.Name = "time";
time.Size = new Size(267, 27);
time.TabIndex = 5;
//
// label2
//
label2.AutoSize = true;
label2.Location = new Point(26, 66);
label2.Name = "label2";
label2.Size = new Size(39, 20);
label2.TabIndex = 4;
label2.Text = "时间";
//
// city
//
city.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
city.Location = new Point(351, 13);
city.Name = "city";
city.RowHeadersWidth = 51;
city.Size = new Size(1118, 84);
city.TabIndex = 6;
//
// yesterday
//
yesterday.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
yesterday.Location = new Point(27, 518);
yesterday.Name = "yesterday";
yesterday.RowHeadersWidth = 51;
yesterday.Size = new Size(1442, 193);
yesterday.TabIndex = 7;
//
// Form1
//
AutoScaleDimensions = new SizeF(9F, 20F);
AutoScaleMode = AutoScaleMode.Font;
BackColor = SystemColors.InactiveCaption;
ClientSize = new Size(1481, 743);
Controls.Add(yesterday);
Controls.Add(city);
Controls.Add(time);
Controls.Add(label2);
Controls.Add(date);
Controls.Add(label1);
Controls.Add(button1);
Controls.Add(datas);
MaximizeBox = false;
MinimizeBox = false;
Name = "Form1";
Text = "天气预报";
((System.ComponentModel.ISupportInitialize)datas).EndInit();
((System.ComponentModel.ISupportInitialize)city).EndInit();
((System.ComponentModel.ISupportInitialize)yesterday).EndInit();
ResumeLayout(false);
PerformLayout();
}
#endregion
private DataGridView datas;
private Button button1;
private Label label1;
private TextBox date;
private TextBox time;
private Label label2;
private DataGridView city;
private DataGridView yesterday;
}
}