用"http://m.weather.com.cn/data/" + cityCode + ".html"获取城市天气

转载自: http://blog.sina.com.cn/s/blog_a28e3dd901016512.html


数据来源是中国中央气象局的天气数据,首先我们来了解一下他返回到的数据代表的意思。
city:西安, // 地区名称
city_en:xian, // 英文 (汉语拼音) 名称
date_y:2012年8月30日, // 当前日期
date:, // 网上解释是阴历年
week:星期四, // 星期
fchh:18, // 更新点时间 (18点)
cityid:101110101, // 地区 ID
// 六天的温度
temp1:21℃~28℃, // 在更新点之前是今日最高温到午夜的最低温,在更新点之后是今日午夜的最低温到明日的最高温
temp2:18℃~22℃, // 以此类推
temp3:17℃~26℃,
temp4:16℃~28℃,
temp5:16℃~29℃,
temp6:17℃~30℃,
// 华氏温度
tempF1:69.8℉~82.4℉,
tempF2:64.4℉~71.6℉,
tempF3:62.6℉~78.8℉,
tempF4:60.8℉~82.4℉,
tempF5:60.8℉~84.2℉,
tempF6:62.6℉~86℉,
// 天气描述,同样根据更新点确定 weather1 是今天还是明天的
weather1:阴转中雨,
weather2:中雨转大雨,
weather3:小到中雨转多云,
weather4:多云转晴,
weather5:晴,
weather6:晴转多云,
// 12 幅图片对应六天的天气,更新点前就是今日白天,今日夜间,明日白天,明日夜间,更新点之后就是今日夜间开始的
img1:2, //阴天
img2:8, // 中雨,和一图片对应天气的阴转中雨
img3:8, // 依次类推
img4:9,
img5:21,
img6:1,
img7:1,
img8:0,
img9:0, // 晴
img10:99, // 第五天是晴,没有 "转" 了,所以这幅图片是无效占位,和前一幅显示相同
img11:0,
img12:1,
img_single:8,
// 分别对应图片的描述
img_title1:阴,
img_title2:中雨,
img_title3:中雨,
img_title4:大雨,
img_title5:小到中雨,
img_title6:多云,
img_title7:多云,
img_title8:晴,
img_title9:晴,
img_title10:晴,
img_title11:晴,
img_title12:多云,
img_title_single:中雨,
// 六天的风力和风向
wind1:西风小于3级转3-4级,
wind2:西风3-4级,
wind3:旋转风小于3级,
wind4:旋转风小于3级,
wind5:旋转风小于3级,
wind6:旋转风小于3级,
// 今明的风向
fx1:西风,
fx2:西风,
// 六天的风力(和风向分开了)
fl1:小于3级转3-4级,
fl2:3-4级,
fl3:小于3级,
fl4:小于3级,
fl5:小于3级,
fl6:小于3级,
// 生活指数,也和更新点有关系
index:热, // 一天舒适度
index_d:天气较热,建议着短裙、短裤、短套装、T恤等夏季服装。年老体弱者宜着长袖衬衫和单裤。, // 一天舒适度的描述
index48:舒适, //两天的舒适度(48小时)
index48_d:建议着薄型套装或牛仔衫裤等春秋过渡装。年老体弱者宜着套装、夹克衫等。, // 描述
index_uv:弱, // 一天的紫外线指数
index48_uv:最弱, // 两天紫外线指数
index_xc:不宜, // 洗车指数
index_tr:一般, // 旅游指数
index_co:较舒适, //舒适度指数
st1:24, // 这些不知道干啥的~应该也是六天的一个什么数据吧。
st2:20,
st3:17,
st4:14,
st5:26,
st6:15,
index_cl:不宜, // 晨练指数
index_ls:不宜, // 晾晒指数
index_ag:极易发 // 息斯敏过敏气象指数

对于实时天气数据的各项具体含义解释如下:
city:西安, // 地区名
cityid:101110101, // 地区 ID
temp1:21℃, // 今天夜间温度
temp2:28℃, // 明天白天温度
weather:阴转中雨, // 天气描述
img1:n2.gif, // 今天夜间天气图片 n 表示 night
img2:d8.gif, // 明天白天天气图片 d 表示 day
ptime:18:00 // 更新时间

注意返回的数据的格式是Json类型。如何解析,我们要用到解析工具通过解析获取所需的信息。由于提供的数据比较多,我们可以选择自己需要的数据,不一定给的数据都要使用到。通过上面介绍我们已经大概了解了这些数据代表的含义。那么我们现在进行Android代码部分的讲解。通过下面的函数我们可以获取到网页数据,其中的String strUrl参数即是网址。
private String connServerForResult(String strUrl) {
//获取HttpGet对象
HttpGet httpRequest = new HttpGet(strUrl);
String strResult = "";
try {
// HttpClient对象
HttpClient httpClient = new DefaultHttpClient();
// 获得HttpResponse对象
HttpResponse httpResponse = httpClient.execute(httpRequest);
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
// 取得返回的数据
strResult = EntityUtils.toString(httpResponse.getEntity());
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Log.i("Infor", strResult);
return strResult; //返回结果
}
对于返回的结果我们通过Json解析工具进行解析。下面是解析函数的代码,其参数就是要解析的Json格式数据字符串。
private void parseJson(String strResult) {
try {
JSONObject jsonObj = new JSONObject(strResult).getJSONObject("weatherinfo");
today= jsonObj.getString("date_y"); //当前日期
dayofweek= jsonObj.getString("week"); //当前星期
city = jsonObj.getString("city"); //城市名称
ftime= jsonObj.getInt("fchh"); //更新时间(整点)【更新时间确定temp1属于哪天】
……………… //由于数据较多此处省略了部分代码,其他数据解析方法相同,大家可以照葫芦画瓢
} catch (JSONException e) {
Log.i("Erorr","Json parse error");
e.printStackTrace();
}

你可能感兴趣的:(用"http://m.weather.com.cn/data/" + cityCode + ".html"获取城市天气)