重写了WebClient类,增加超时属性。
//模拟http请求,POST相关参数至中央气象网,返回环境资料json字符串
WebClientEx client = new WebClientEx();
client.Timeout = 1500;
client.Credentials = CredentialCache.DefaultCredentials;
string url = "http://192.168.1.100/npt/forecast/aq_query";
//string dateHour = DateTime.Now.ToString("yyyyMMddHH");
string datastr = "areaname=&citycode=&forecasttime=" + dateHour + "&order=desc&page=1&pcode=ALN&rows=100&sort=PM25";
byte[] bytearray = Encoding.UTF8.GetBytes(datastr);
client.Headers.Add("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
client.Headers.Add("ContentLength", bytearray.Length.ToString());
//下载json数据
Byte[] pageData = client.UploadData(url, "POST", bytearray);
string pageHtml = Encoding.UTF8.GetString(pageData);
///反序列化,转成数据表
JavaScriptSerializer jss = new JavaScriptSerializer();
JsonClass jc = jss.Deserialize<JsonClass>(pageHtml);
DataTable dt = CreateAQITB();
foreach (AQIZY aqi in jc.rows)
{
DataRow dr = dt.NewRow();
dr["jaId"] = DBNull.Value;
dr["StationName"] = aqi.city_name;
dr["StationNum"] = aqi.code;
dr["City"] = aqi.area_name;
dr["AQI"] = aqi.aqi;
dr["jaLevel"] = DBNull.Value;
dr["jaQuality"] = DBNull.Value; //aqi.aq1,优,2良,轻度污染,中度污染,重度污染
dr["pm2_5"] = aqi.pm25;
dr["pm10"] = aqi.pm10;
DateTime dttime = DateTime.ParseExact(aqi.forecasttime, "yyyyMMddHH", System.Globalization.CultureInfo.CurrentCulture);
dr["jaDate"] = dttime.ToString("yyyy-MM-dd HH:mm:ss");
dt.Rows.Add(dr);
}