您的位置:首页 > 理论基础 > 计算机网络

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

2014-04-30 14:49 916 查看
转载自: 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();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐