本文从http://m.weather.com.cn/获取天气信息。
获取城市编号
一级城市列表:
-
数据源:
-
得到的数据:
01|北京,02|上海,03|天津,04|重庆,05|黑龙江,06|吉林,07|辽宁,08|内蒙古,09|河北,10|山西,11|陕西,12|山东,13|新疆,14|西藏,15|青海,16|甘肃,17|宁夏,18|河南,19|江苏,20|湖北,21|浙江,22|安徽,23|福建,24|江西,25|湖南,26|贵州,27|四川,28|广东,29|云南,30|广西,31|海南,32|香港,33|澳门,34|台湾
二级城市列表
-
数据源,例如广东
-
得到的数据
2801|广州,2802|韶关,2803|惠州,2804|梅州,2805|汕头,2806|深圳,2807|珠海,2808|佛山,2809|肇庆,2810|湛江,2811|江门,2812|河源,2813|清远,2814|云浮,2815|潮州,2816|东莞,2817|中山,2818|阳江,2819|揭阳,2820|茂名,2821|汕尾
三级城市列表,
-
数据源,例如深圳2806
-
得到的数据:
280601|深圳
由城市三级码得到城市编码
-
数据源,如河北.唐山.迁西(ps 哪里的板栗很出名哦)
-
城市编码:
090507|101090507
则河北.唐山.迁西的城市编码为101090507
获取城市天气
- 今日及未来天气接口【内容最详细】
接口已经停用了,http://m.weather.com.cn/data/101090507.html,需要使用新接口。
有一个新的接口可以使用,不过使用前需要注册,
得到数据
{"weatherinfo":{"city":"迁西","cityid":"101090507","temp1":"16℃","temp2":"1℃","weather":"多云","img1":"d1.gif","img2":"n1.gif","ptime":"08:00"}}
相关代码
从Web获取json
String src ="http://www.weather.com.cn/data/cityinfo/101090507.html";
String getJson(String src) {
try {
URL url = new URL(src);
int lineIndex=0;
HttpURLConnection httpConnect = (HttpURLConnection) url.openConnection();
InputStreamReader inputStreamReader = new InputStreamReader(httpConnect.getInputStream());
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String line ="";
String jsonStr = "";
while((line = bufferedReader.readLine())!=null){
lineIndex++;
jsonStr += line;
}
Log.e(TAG, jsonStr);
return jsonStr;
} catch (IOException e){
e.printStackTrace();
}
return "";
}
此段代码的返回值,即是json格式的天气信息。
解析json,获得想要信息
String getWeatherInfo(String json){
String weatherInfo ="";
try{
String filed ="";
JSONObject obj = new JSONObject(json);
filed = obj.getString("weatherinfo");
JSONObject objsub=new JSONObject(filed);
weatherInfo+="深圳 ,";
weatherInfo += objsub.getString("temp1") + "--";
weatherInfo += objsub.getString("temp2") + ", ";
weatherInfo += objsub.get("weather");
} catch (Exception e) {
e.printStackTrace();
}
Log.e(TAG,weatherInfo);
return weatherInfo;
}