首先看下官方给出的三个数据接口:
接口地址:
http://www.weather.com.cn/data/sk/101010100.html
http://www.weather.com.cn/data/cityinfo/101010100.html
http://m.weather.com.cn/data/101010100.html
全国各城市代码如下
[ { "省": "北京", "市": [ { "市名": "北京", "编码": "101010100" }, { "市名": "朝阳", "编码": "101010300" }, { "市名": "顺义", "编码": "101010400" }, { "市名": "怀柔", "编码": "101010500" }, { "市名": "通州", "编码": "101010600" }, { "市名": "昌平", "编码": "101010700" }, { "市名": "延庆", "编码": "101010800" }, { "市名": "丰台", "编码": "101010900" }, { "市名": "石景山", "编码": "101011000" }, { "市名": "大兴", "编码": "101011100" }, { "市名": "房山", "编码": "101011200" }, { "市名": "密云", "编码": "101011300" }, { "市名": "门头沟", "编码": "101011400" }, { "市名": "平谷", "编码": "101011500" }, { "市名": "八达岭", "编码": "101011600" }, { "市名": "佛爷顶", "编码": "101011700" }, { "市名": "汤河口", "编码": "101011800" }, { "市名": "密云上甸子", "编码": "101011900" }, { "市名": "斋堂", "编码": "101012000" }, { "市名": "霞云岭", "编码": "101012100" }, { "市名": "北京城区", "编码": "101012200" }, { "市名": "海淀", "编码": "101010200" } ] }, { "省": "天津", "市": [ { "市名": "天津", "编码": "101030100" }, { "市名": "宝坻", "编码": "101030300" }, { "市名": "东丽", "编码": "101030400" }, { "市名": "西青", "编码": "101030500" }, { "市名": "北辰", "编码": "101030600" }, { "市名": "蓟县", "编码": "101031400" }, { "市名": "汉沽", "编码": "101030800" }, { "市名": "静海", "编码": "101030900" }, { "市名": "津南", "编码": "101031000" }, { "市名": "塘沽", "编码": "101031100" }, { "市名": "大港", "编码": "101031200" }, { "市名": "武清", "编码": "101030200" }, { "市名": "宁河", "编码": "101030700" } ] }, { "省": "上海", "市": [ { "市名": "上海", "编码": "101020100" }, { "市名": "宝山", "编码": "101020300" }, { "市名": "嘉定", "编码": "101020500" }, { "市名": "南汇", "编码": "101020600" }, { "市名": "浦东", "编码": "101021300" }, { "市名": "青浦", "编码": "101020800" }, { "市名": "松江", "编码": "101020900" }, { "市名": "奉贤", "编码": "101021000" }, { "市名": "崇明", "编码": "101021100" }, { "市名": "徐家汇", "编码": "101021200" }, { "市名": "闵行", "编码": "101020200" }, { "市名": "金山", "编码": "101020700" } ] }, { "省": "河北", "市": [ { "市名": "石家庄", "编码": "101090101" }, { "市名": "张家口", "编码": "101090301" }, { "市名": "承德", "编码": "101090402" }, { "市名": "唐山", "编码": "101090501" }, { "市名": "秦皇岛", "编码": "101091101" }, { "市名": "沧州", "编码": "101090701" }, { "市名": "衡水", "编码": "101090801" }, { "市名": "邢台", "编码": "101090901" }, { "市名": "邯郸", "编码": "101091001" }, { "市名": "保定", "编码": "101090201" }, { "市名": "廊坊", "编码": "101090601" } ] }, { "省": "河南", "市": [ { "市名": "郑州", "编码": "101180101" }, { "市名": "新乡", "编码": "101180301" }, { "市名": "许昌", "编码": "101180401" }, { "市名": "平顶山", "编码": "101180501" }, { "市名": "信阳", "编码": "101180601" }, { "市名": "南阳", "编码": "101180701" }, { "市名": "开封", "编码": "101180801" }, { "市名": "洛阳", "编码": "101180901" }, { "市名": "商丘", "编码": "101181001" }, { "市名": "焦作", "编码": "101181101" }, { "市名": "鹤壁", "编码": "101181201" }, { "市名": "濮阳", "编码": "101181301" }, { "市名": "周口", "编码": "101181401" }, { "市名": "漯河", "编码": "101181501" }, { "市名": "驻马店", "编码": "101181601" }, { "市名": "三门峡", "编码": "101181701" }, { "市名": "济源", "编码": "101181801" }, { "市名": "安阳", "编码": "101180201" } ] }, { "省": "安徽", "市": [ { "市名": "合肥", "编码": "101220101" }, { "市名": "芜湖", "编码": "101220301" }, { "市名": "淮南", "编码": "101220401" }, { "市名": "马鞍山", "编码": "101220501" }, { "市名": "安庆", "编码": "101220601" }, { "市名": "宿州", "编码": "101220701" }, { "市名": "阜阳", "编码": "101220801" }, { "市名": "亳州", "编码": "101220901" }, { "市名": "黄山", "编码": "101221001" }, { "市名": "滁州", "编码": "101221101" }, { "市名": "淮北", "编码": "101221201" }, { "市名": "铜陵", "编码": "101221301" }, { "市名": "宣城", "编码": "101221401" }, { "市名": "六安", "编码": "101221501" }, { "市名": "巢湖", "编码": "101221601" }, { "市名": "池州", "编码": "101221701" }, { "市名": "蚌埠", "编码": "101220201" } ] }, { "省": "浙江", "市": [ { "市名": "杭州", "编码": "101210101" }, { "市名": "舟山", "编码": "101211101" }, { "市名": "湖州", "编码": "101210201" }, { "市名": "嘉兴", "编码": "101210301" }, { "市名": "金华", "编码": "101210901" }, { "市名": "绍兴", "编码": "101210501" }, { "市名": "台州", "编码": "101210601" }, { "市名": "温州", "编码": "101210701" }, { "市名": "丽水", "编码": "101210801" }, { "市名": "衢州", "编码": "101211001" }, { "市名": "宁波", "编码": "101210401" } ] }, { "省": "重庆", "市": [ { "市名": "重庆", "编码": "101040100" }, { "市名": "合川", "编码": "101040300" }, { "市名": "南川", "编码": "101040400" }, { "市名": "江津", "编码": "101040500" }, { "市名": "万盛", "编码": "101040600" }, { "市名": "渝北", "编码": "101040700" }, { "市名": "北碚", "编码": "101040800" }, { "市名": "巴南", "编码": "101040900" }, { "市名": "长寿", "编码": "101041000" }, { "市名": "黔江", "编码": "101041100" }, { "市名": "万州天城", "编码": "101041200" }, { "市名": "万州龙宝", "编码": "101041300" }, { "市名": "涪陵", "编码": "101041400" }, { "市名": "开县", "编码": "101041500" }, { "市名": "城口", "编码": "101041600" }, { "市名": "云阳", "编码": "101041700" }, { "市名": "巫溪", "编码": "101041800" }, { "市名": "奉节", "编码": "101041900" }, { "市名": "巫山", "编码": "101042000" }, { "市名": "潼南", "编码": "101042100" }, { "市名": "垫江", "编码": "101042200" }, { "市名": "梁平", "编码": "101042300" }, { "市名": "忠县", "编码": "101042400" }, { "市名": "石柱", "编码": "101042500" }, { "市名": "大足", "编码": "101042600" }, { "市名": "荣昌", "编码": "101042700" }, { "市名": "铜梁", "编码": "101042800" }, { "市名": "璧山", "编码": "101042900" }, { "市名": "丰都", "编码": "101043000" }, { "市名": "武隆", "编码": "101043100" }, { "市名": "彭水", "编码": "101043200" }, { "市名": "綦江", "编码": "101043300" }, { "市名": "酉阳", "编码": "101043400" }, { "市名": "秀山", "编码": "101043600" }, { "市名": "沙坪坝", "编码": "101043700" }, { "市名": "永川", "编码": "101040200" } ] }, { "省": "福建", "市": [ { "市名": "福州", "编码": "101230101" }, { "市名": "泉州", "编码": "101230501" }, { "市名": "漳州", "编码": "101230601" }, { "市名": "龙岩", "编码": "101230701" }, { "市名": "晋江", "编码": "101230509" }, { "市名": "南平", "编码": "101230901" }, { "市名": "厦门", "编码": "101230201" }, { "市名": "宁德", "编码": "101230301" }, { "市名": "莆田", "编码": "101230401" }, { "市名": "三明", "编码": "101230801" } ] }, { "省": "甘肃", "市": [ { "市名": "兰州", "编码": "101160101" }, { "市名": "平凉", "编码": "101160301" }, { "市名": "庆阳", "编码": "101160401" }, { "市名": "武威", "编码": "101160501" }, { "市名": "金昌", "编码": "101160601" }, { "市名": "嘉峪关", "编码": "101161401" }, { "市名": "酒泉", "编码": "101160801" }, { "市名": "天水", "编码": "101160901" }, { "市名": "武都", "编码": "101161001" }, { "市名": "临夏", "编码": "101161101" }, { "市名": "合作", "编码": "101161201" }, { "市名": "白银", "编码": "101161301" }, { "市名": "定西", "编码": "101160201" }, { "市名": "张掖", "编码": "101160701" } ] }, { "省": "广东", "市": [ { "市名": "广州", "编码": "101280101" }, { "市名": "惠州", "编码": "101280301" }, { "市名": "梅州", "编码": "101280401" }, { "市名": "汕头", "编码": "101280501" }, { "市名": "深圳", "编码": "101280601" }, { "市名": "珠海", "编码": "101280701" }, { "市名": "佛山", "编码": "101280800" }, { "市名": "肇庆", "编码": "101280901" }, { "市名": "湛江", "编码": "101281001" }, { "市名": "江门", "编码": "101281101" }, { "市名": "河源", "编码": "101281201" }, { "市名": "清远", "编码": "101281301" }, { "市名": "云浮", "编码": "101281401" }, { "市名": "潮州", "编码": "101281501" }, { "市名": "东莞", "编码": "101281601" }, { "市名": "中山", "编码": "101281701" }, { "市名": "阳江", "编码": "101281801" }, { "市名": "揭阳", "编码": "101281901" }, { "市名": "茂名", "编码": "101282001" }, { "市名": "汕尾", "编码": "101282101" }, { "市名": "韶关", "编码": "101280201" } ] }, { "省": "广西", "市": [ { "市名": "南宁", "编码": "101300101" }, { "市名": "柳州", "编码": "101300301" }, { "市名": "来宾", "编码": "101300401" }, { "市名": "桂林", "编码": "101300501" }, { "市名": "梧州", "编码": "101300601" }, { "市名": "防城港", "编码": "101301401" }, { "市名": "贵港", "编码": "101300801" }, { "市名": "玉林", "编码": "101300901" }, { "市名": "百色", "编码": "101301001" }, { "市名": "钦州", "编码": "101301101" }, { "市名": "河池", "编码": "101301201" }, { "市名": "北海", "编码": "101301301" }, { "市名": "崇左", "编码": "101300201" }, { "市名": "贺州", "编码": "101300701" } ] }, { "省": "贵州", "市": [ { "市名": "贵阳", "编码": "101260101" }, { "市名": "安顺", "编码": "101260301" }, { "市名": "都匀", "编码": "101260401" }, { "市名": "兴义", "编码": "101260906" }, { "市名": "铜仁", "编码": "101260601" }, { "市名": "毕节", "编码": "101260701" }, { "市名": "六盘水", "编码": "101260801" }, { "市名": "遵义", "编码": "101260201" }, { "市名": "凯里", "编码": "101260501" } ] }, { "省": "云南", "市": [ { "市名": "昆明", "编码": "101290101" }, { "市名": "红河", "编码": "101290301" }, { "市名": "文山", "编码": "101290601" }, { "市名": "玉溪", "编码": "101290701" }, { "市名": "楚雄", "编码": "101290801" }, { "市名": "普洱", "编码": "101290901" }, { "市名": "昭通", "编码": "101291001" }, { "市名": "临沧", "编码": "101291101" }, { "市名": "怒江", "编码": "101291201" }, { "市名": "香格里拉", "编码": "101291301" }, { "市名": "丽江", "编码": "101291401" }, { "市名": "德宏", "编码": "101291501" }, { "市名": "景洪", "编码": "101291601" }, { "市名": "大理", "编码": "101290201" }, { "市名": "曲靖", "编码": "101290401" }, { "市名": "保山", "编码": "101290501" } ] }, { "省": "内蒙古", "市": [ { "市名": "呼和浩特", "编码": "101080101" }, { "市名": "乌海", "编码": "101080301" }, { "市名": "集宁", "编码": "101080401" }, { "市名": "通辽", "编码": "101080501" }, { "市名": "阿拉善左旗", "编码": "101081201" }, { "市名": "鄂尔多斯", "编码": "101080701" }, { "市名": "临河", "编码": "101080801" }, { "市名": "锡林浩特", "编码": "101080901" }, { "市名": "呼伦贝尔", "编码": "101081000" }, { "市名": "乌兰浩特", "编码": "101081101" }, { "市名": "包头", "编码": "101080201" }, { "市名": "赤峰", "编码": "101080601" } ] }, { "省": "江西", "市": [ { "市名": "南昌", "编码": "101240101" }, { "市名": "上饶", "编码": "101240301" }, { "市名": "抚州", "编码": "101240401" }, { "市名": "宜春", "编码": "101240501" }, { "市名": "鹰潭", "编码": "101241101" }, { "市名": "赣州", "编码": "101240701" }, { "市名": "景德镇", "编码": "101240801" }, { "市名": "萍乡", "编码": "101240901" }, { "市名": "新余", "编码": "101241001" }, { "市名": "九江", "编码": "101240201" }, { "市名": "吉安", "编码": "101240601" } ] }, { "省": "湖北", "市": [ { "市名": "武汉", "编码": "101200101" }, { "市名": "黄冈", "编码": "101200501" }, { "市名": "荆州", "编码": "101200801" }, { "市名": "宜昌", "编码": "101200901" }, { "市名": "恩施", "编码": "101201001" }, { "市名": "十堰", "编码": "101201101" }, { "市名": "神农架", "编码": "101201201" }, { "市名": "随州", "编码": "101201301" }, { "市名": "荆门", "编码": "101201401" }, { "市名": "天门", "编码": "101201501" }, { "市名": "仙桃", "编码": "101201601" }, { "市名": "潜江", "编码": "101201701" }, { "市名": "襄樊", "编码": "101200201" }, { "市名": "鄂州", "编码": "101200301" }, { "市名": "孝感", "编码": "101200401" }, { "市名": "黄石", "编码": "101200601" }, { "市名": "咸宁", "编码": "101200701" } ] }, { "省": "四川", "市": [ { "市名": "成都", "编码": "101270101" }, { "市名": "自贡", "编码": "101270301" }, { "市名": "绵阳", "编码": "101270401" }, { "市名": "南充", "编码": "101270501" }, { "市名": "达州", "编码": "101270601" }, { "市名": "遂宁", "编码": "101270701" }, { "市名": "广安", "编码": "101270801" }, { "市名": "巴中", "编码": "101270901" }, { "市名": "泸州", "编码": "101271001" }, { "市名": "宜宾", "编码": "101271101" }, { "市名": "内江", "编码": "101271201" }, { "市名": "资阳", "编码": "101271301" }, { "市名": "乐山", "编码": "101271401" }, { "市名": "眉山", "编码": "101271501" }, { "市名": "凉山", "编码": "101271601" }, { "市名": "雅安", "编码": "101271701" }, { "市名": "甘孜", "编码": "101271801" }, { "市名": "阿坝", "编码": "101271901" }, { "市名": "德阳", "编码": "101272001" }, { "市名": "广元", "编码": "101272101" }, { "市名": "攀枝花", "编码": "101270201" } ] }, { "省": "宁夏", "市": [ { "市名": "银川", "编码": "101170101" }, { "市名": "中卫", "编码": "101170501" }, { "市名": "固原", "编码": "101170401" }, { "市名": "石嘴山", "编码": "101170201" }, { "市名": "吴忠", "编码": "101170301" } ] }, { "省": "青海", "市": [ { "市名": "西宁", "编码": "101150101" }, { "市名": "黄南", "编码": "101150301" }, { "市名": "海北", "编码": "101150801" }, { "市名": "果洛", "编码": "101150501" }, { "市名": "玉树", "编码": "101150601" }, { "市名": "海西", "编码": "101150701" }, { "市名": "海东", "编码": "101150201" }, { "市名": "海南", "编码": "101150401" } ] }, { "省": "山东", "市": [ { "市名": "济南", "编码": "101120101" }, { "市名": "潍坊", "编码": "101120601" }, { "市名": "临沂", "编码": "101120901" }, { "市名": "菏泽", "编码": "101121001" }, { "市名": "滨州", "编码": "101121101" }, { "市名": "东营", "编码": "101121201" }, { "市名": "威海", "编码": "101121301" }, { "市名": "枣庄", "编码": "101121401" }, { "市名": "日照", "编码": "101121501" }, { "市名": "莱芜", "编码": "101121601" }, { "市名": "聊城", "编码": "101121701" }, { "市名": "青岛", "编码": "101120201" }, { "市名": "淄博", "编码": "101120301" }, { "市名": "德州", "编码": "101120401" }, { "市名": "烟台", "编码": "101120501" }, { "市名": "济宁", "编码": "101120701" }, { "市名": "泰安", "编码": "101120801" } ] }, { "省": "陕西", "市": [ { "市名": "西安", "编码": "101110101" }, { "市名": "延安", "编码": "101110300" }, { "市名": "榆林", "编码": "101110401" }, { "市名": "铜川", "编码": "101111001" }, { "市名": "商洛", "编码": "101110601" }, { "市名": "安康", "编码": "101110701" }, { "市名": "汉中", "编码": "101110801" }, { "市名": "宝鸡", "编码": "101110901" }, { "市名": "咸阳", "编码": "101110200" }, { "市名": "渭南", "编码": "101110501" } ] }, { "省": "山西", "市": [ { "市名": "太原", "编码": "101100101" }, { "市名": "临汾", "编码": "101100701" }, { "市名": "运城", "编码": "101100801" }, { "市名": "朔州", "编码": "101100901" }, { "市名": "忻州", "编码": "101101001" }, { "市名": "长治", "编码": "101100501" }, { "市名": "大同", "编码": "101100201" }, { "市名": "阳泉", "编码": "101100301" }, { "市名": "晋中", "编码": "101100401" }, { "市名": "晋城", "编码": "101100601" }, { "市名": "吕梁", "编码": "101101100" } ] }, { "省": "新疆", "市": [ { "市名": "乌鲁木齐", "编码": "101130101" }, { "市名": "石河子", "编码": "101130301" }, { "市名": "昌吉", "编码": "101130401" }, { "市名": "吐鲁番", "编码": "101130501" }, { "市名": "库尔勒", "编码": "101130601" }, { "市名": "阿拉尔", "编码": "101130701" }, { "市名": "阿克苏", "编码": "101130801" }, { "市名": "喀什", "编码": "101130901" }, { "市名": "伊宁", "编码": "101131001" }, { "市名": "塔城", "编码": "101131101" }, { "市名": "哈密", "编码": "101131201" }, { "市名": "和田", "编码": "101131301" }, { "市名": "阿勒泰", "编码": "101131401" }, { "市名": "阿图什", "编码": "101131501" }, { "市名": "博乐", "编码": "101131601" }, { "市名": "克拉玛依", "编码": "101130201" } ] }, { "省": "西藏", "市": [ { "市名": "拉萨", "编码": "101140101" }, { "市名": "山南", "编码": "101140301" }, { "市名": "阿里", "编码": "101140701" }, { "市名": "昌都", "编码": "101140501" }, { "市名": "那曲", "编码": "101140601" }, { "市名": "日喀则", "编码": "101140201" }, { "市名": "林芝", "编码": "101140401" } ] }, { "省": "台湾", "市": [ { "市名": "台北县", "编码": "101340101" }, { "市名": "高雄", "编码": "101340201" }, { "市名": "台中", "编码": "101340401" } ] }, { "省": "海南", "市": [ { "市名": "海口", "编码": "101310101" }, { "市名": "三亚", "编码": "101310201" }, { "市名": "东方", "编码": "101310202" }, { "市名": "临高", "编码": "101310203" }, { "市名": "澄迈", "编码": "101310204" }, { "市名": "儋州", "编码": "101310205" }, { "市名": "昌江", "编码": "101310206" }, { "市名": "白沙", "编码": "101310207" }, { "市名": "琼中", "编码": "101310208" }, { "市名": "定安", "编码": "101310209" }, { "市名": "屯昌", "编码": "101310210" }, { "市名": "琼海", "编码": "101310211" }, { "市名": "文昌", "编码": "101310212" }, { "市名": "保亭", "编码": "101310214" }, { "市名": "万宁", "编码": "101310215" }, { "市名": "陵水", "编码": "101310216" }, { "市名": "西沙", "编码": "101310217" }, { "市名": "南沙岛", "编码": "101310220" }, { "市名": "乐东", "编码": "101310221" }, { "市名": "五指山", "编码": "101310222" }, { "市名": "琼山", "编码": "101310102" } ] }, { "省": "湖南", "市": [ { "市名": "长沙", "编码": "101250101" }, { "市名": "株洲", "编码": "101250301" }, { "市名": "衡阳", "编码": "101250401" }, { "市名": "郴州", "编码": "101250501" }, { "市名": "常德", "编码": "101250601" }, { "市名": "益阳", "编码": "101250700" }, { "市名": "娄底", "编码": "101250801" }, { "市名": "邵阳", "编码": "101250901" }, { "市名": "岳阳", "编码": "101251001" }, { "市名": "张家界", "编码": "101251101" }, { "市名": "怀化", "编码": "101251201" }, { "市名": "黔阳", "编码": "101251301" }, { "市名": "永州", "编码": "101251401" }, { "市名": "吉首", "编码": "101251501" }, { "市名": "湘潭", "编码": "101250201" } ] }, { "省": "江苏", "市": [ { "市名": "南京", "编码": "101190101" }, { "市名": "镇江", "编码": "101190301" }, { "市名": "苏州", "编码": "101190401" }, { "市名": "南通", "编码": "101190501" }, { "市名": "扬州", "编码": "101190601" }, { "市名": "宿迁", "编码": "101191301" }, { "市名": "徐州", "编码": "101190801" }, { "市名": "淮安", "编码": "101190901" }, { "市名": "连云港", "编码": "101191001" }, { "市名": "常州", "编码": "101191101" }, { "市名": "泰州", "编码": "101191201" }, { "市名": "无锡", "编码": "101190201" }, { "市名": "盐城", "编码": "101190701" } ] }, { "省": "黑龙江", "市": [ { "市名": "哈尔滨", "编码": "101050101" }, { "市名": "牡丹江", "编码": "101050301" }, { "市名": "佳木斯", "编码": "101050401" }, { "市名": "绥化", "编码": "101050501" }, { "市名": "黑河", "编码": "101050601" }, { "市名": "双鸭山", "编码": "101051301" }, { "市名": "伊春", "编码": "101050801" }, { "市名": "大庆", "编码": "101050901" }, { "市名": "七台河", "编码": "101051002" }, { "市名": "鸡西", "编码": "101051101" }, { "市名": "鹤岗", "编码": "101051201" }, { "市名": "齐齐哈尔", "编码": "101050201" }, { "市名": "大兴安岭", "编码": "101050701" } ] }, { "省": "吉林", "市": [ { "市名": "长春", "编码": "101060101" }, { "市名": "延吉", "编码": "101060301" }, { "市名": "四平", "编码": "101060401" }, { "市名": "白山", "编码": "101060901" }, { "市名": "白城", "编码": "101060601" }, { "市名": "辽源", "编码": "101060701" }, { "市名": "松原", "编码": "101060801" }, { "市名": "吉林", "编码": "101060201" }, { "市名": "通化", "编码": "101060501" } ] }, { "省": "辽宁", "市": [ { "市名": "沈阳", "编码": "101070101" }, { "市名": "鞍山", "编码": "101070301" }, { "市名": "抚顺", "编码": "101070401" }, { "市名": "本溪", "编码": "101070501" }, { "市名": "丹东", "编码": "101070601" }, { "市名": "葫芦岛", "编码": "101071401" }, { "市名": "营口", "编码": "101070801" }, { "市名": "阜新", "编码": "101070901" }, { "市名": "辽阳", "编码": "101071001" }, { "市名": "铁岭", "编码": "101071101" }, { "市名": "朝阳", "编码": "101071201" }, { "市名": "盘锦", "编码": "101071301" }, { "市名": "大连", "编码": "101070201" }, { "市名": "锦州", "编码": "101070701" } ] } ]
<appSettings> <!--根据IP获取城市的网址--> <add key = "GetCityByIP" value = "http://pv.sohu.com/cityjson"/> <!--获取天气的网址--> <add key = "GetWeather" value = "http://m.weather.com.cn/data/{0}.html"/> </appSettings>
给出数据下载CityCode.Json.txt.zip
2. 图片接口
http://m.weather.com.cn/img/c0.gif
http://m.weather.com.cn/img/b0.gif
http://www.weather.com.cn/m/i/weatherpic/29x20/d0.gif
http://www.weather.com.cn/m2/i/icon_weather/29x20/n00.gif
这个图就是天气现象0(晴)的图片,其他天气现象的图片依此类推。c打头的图片是20*20像素的,b打头的是50*46像素的,d打头的是反白的图标,29*20像素,n打头的是夜间反白图标,29*20像素,注意这里的文件名是两位数字! 也许还有更多的图标,等待大家发掘啦~
对于第三个接口,返回信息比较全面,也是以json格式提供,格式如下 {"weatherinfo": { //基本信息; "city":"北京","city_en":"beijing", "date_y":"2012年2月16日", "date":"", "week":"星期四", "fchh":"11", "cityid":"101010100", //摄氏温度 "temp1":"2℃~-7℃", "temp2":"1℃~-7℃", "temp3":"4℃~-7℃", "temp4":"7℃~-5℃", "temp5":"5℃~-3℃", "temp6":"5℃~-2℃", //华氏温度; "tempF1":"35.6℉~19.4℉", "tempF2":"33.8℉~19.4℉", "tempF3":"39.2℉~19.4℉", "tempF4":"44.6℉~23℉", "tempF5":"41℉~26.6℉", "tempF6":"41℉~28.4℉", //天气描述; "weather1":"晴", "weather2":"晴", "weather3":"晴", "weather4":"晴转多云", "weather5":"多云", "weather6":"多云转阴", //天气描述图片序号 "img1":"0", "img2":"99", "img3":"0", "img4":"99", "img5":"0", "img6":"99", "img7":"0", "img8":"1", "img9":"1", "img10":"99", "img11":"1", "img12":"2", "img_single":"0", //图片名称; "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-4级转微风", "wind2":"微风", "wind3":"微风", "wind4":"微风", "wind5":"微风", "wind6":"微风", //风速级别描述 "fx1":"北风", "fx2":"微风", "fl1":"3-4级转小于3级", "fl2":"小于3级", "fl3":"小于3级", "fl4":"小于3级", "fl5":"小于3级", "fl6":"小于3级", //今天穿衣指数; "index":"冷", "index_d":"天气冷,建议着棉衣、皮夹克加羊毛衫等冬季服装。年老体弱者宜着厚棉衣或冬大衣。", //48小时穿衣指数 "index48":"冷", "index48_d":"天气冷,建议着棉衣、皮夹克加羊毛衫等冬季服装。年老体弱者宜着厚棉衣或冬大衣。", //紫外线及48小时紫外线 "index_uv":"弱", "index48_uv":"弱", //洗车 "index_xc":"适宜", //旅游 "index_tr":"一般", //舒适指数 "index_co":"较不舒适", "st1":"1", "st2":"-8", "st3":"2", "st4":"-4", "st5":"5", "st6":"-5", //晨练 "index_cl":"较不宜", //晾晒 "index_ls":"基本适宜", //过敏 "index_ag":"极不易发"}}
3. JSON接口 真没想到~居然有JSON接口~JSON在iPhone上分析起来要比XML简单很多 http://m.weather.com.cn/data/101010200.html 这个是北京的JSON数据,那个HTML的名字是根据上文XML中的url得到的。这个JSON中包含了实时数据、7天天气预报、气象指数等丰富的数据
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Configuration; using Newtonsoft.Json.Linq; using Newtonsoft.Json; using System.Text; using System.IO; using System.Runtime.Serialization; namespace YeSoft.composite { public partial class weather : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Response.Clear(); Response.Charset = "utf-8"; Response.ContentEncoding = Encoding.UTF8; string city = readRemoteWeatherApi(); string cityCode = GetCityCode(city); if (Request.QueryString["type"] != null && Request.QueryString["type"] == "js") { Response.ContentType = "text/javascript"; Response.Charset = "utf-8"; Response.Write(string.Format("var myWeather={0};", ReadWeatherJosnByCode(cityCode))); Response.End(); } YemlWeather ye = ReadWeatherByCode(cityCode); } /// <summary> /// 获取自己的IP对应的城市ID /// </summary> /// <returns></returns> private string readRemoteWeatherApi() { string cityJson = string.Empty; string provincesAndCity = string.Empty; string provinces = string.Empty; string city = string.Empty; try { using (System.Net.WebClient wc = new System.Net.WebClient()) { string url = ConfigurationManager.AppSettings["GetCityByIP"]; cityJson = wc.DownloadString(url); } cityJson = cityJson.Replace("var returnCitySN = ", ""); cityJson = cityJson.Replace(";", ""); JObject JObjtCity = (JObject)JsonConvert.DeserializeObject(cityJson); provincesAndCity = JObjtCity["cname"].ToString(); provinces = provincesAndCity.Substring(0, provincesAndCity.IndexOf("省") + 1); int n = provincesAndCity.IndexOf("省") + 1; city = provincesAndCity.Substring(n, provincesAndCity.Length - 2 - n); } catch (Exception ex) { throw ex; } return city; } /// <summary> /// 读取天气预报接口获取天气信息YemlWeather实体信息 /// </summary> /// <param name="citycode"></param> /// <returns>读取天气预报接口获取天气信息YemlWeather实体信息</returns> public YemlWeather ReadWeatherByCode(string citycode) { YemlWeather WeatherInfo = new YemlWeather(); try { byte[] cityJson = null; using (System.Net.WebClient wc = new System.Net.WebClient()) { cityJson = wc.DownloadData(string.Format("http://m.weather.com.cn/data/{0}.html", citycode)); } Encoding enc = Encoding.GetEncoding("utf-8"); string jsonStr = enc.GetString(cityJson); WeatherInfo = (YemlWeather)JsonConvert.DeserializeObject(jsonStr, typeof(YemlWeather)); } catch (Exception ex) { throw ex; } return WeatherInfo; } /// <summary> /// 读取天气预报接口获取天气信息json字符串 /// </summary> /// <param name="citycode"></param> /// <returns>读取天气预报接口获取天气信息json字符串</returns> public string ReadWeatherJosnByCode(string citycode) { try { byte[] cityJson = null; using (System.Net.WebClient wc = new System.Net.WebClient()) { cityJson = wc.DownloadData(string.Format("http://m.weather.com.cn/data/{0}.html", citycode)); } Encoding enc = Encoding.GetEncoding("utf-8"); string jsonStr = enc.GetString(cityJson); return jsonStr; } catch (Exception ex) { throw ex; } } /// <summary> /// 根据城市名称返回城市代号 /// 城市名称可以有多种形式,如: /// 陕西 /// 安康市 /// 陕西安康 /// 陕西安康市 /// 陕西省安康市 /// </summary> /// <param name="cityName">城市名称</param> /// <returns></returns> private string GetCityCode(string cityName) { StreamReader sr = File.OpenText(string.Format("{0}/App_Data/CityCode.Json.txt", HttpContext.Current.Request.MapPath("~"))); string strCityCodeJson = sr.ReadToEnd(); JArray JObjtCityCode = (JArray)JsonConvert.DeserializeObject(strCityCodeJson); bool isFound = false; string cityCode = string.Empty; for (int i = 0; i < JObjtCityCode.Count; i++) { JArray citys = ConvterJArray(JObjtCityCode[i]["市"]); for (int j = 0; j < citys.Count; j++) { //此为了实现多种城市形式匹配,所以添加多个判断 string _city = citys[j]["市名"].ToString().Replace("\"", ""); string _provice = JObjtCityCode[i]["省"].ToString().Replace("\"", ""); if (_city.ToString() == cityName || String.Format("{0}市", _city) == cityName || String.Format("{0}{1}", _provice, _city) == cityName || String.Format("{0}{1}市", _provice, _city) == cityName || String.Format("{0}省{1}", _provice, _city) == cityName || String.Format("{0}省{1}市", _provice, _city) == cityName) { cityCode = citys[j]["编码"].ToString(); isFound = true; break; } isFound = false; } if (isFound) break; } return cityCode.Replace("\"", ""); } private JArray ConvterJArray(JToken token) { //jtoken 就是一个对象 可以转换层字符串 // 同时对于json 部分时间就是一个jtoken 对象 经转换 成一个jarray 对象 // 就可以知道他的lenght 同时循环处理内部 string tokenTos = token.ToString(); JArray op = (JArray)JsonConvert.DeserializeObject(tokenTos); return op; } } [DataContract] public class WeatherInformation { [JsonProperty("city")] public string City { get; set; } [JsonProperty("city_en")] public string CityEn { get; set; } [JsonProperty("date_y")] public string Date_y { get; set; } [JsonProperty("date")] public string Date { get; set; } [JsonProperty("week")] public string Week { get; set; } [JsonProperty("fchh")] public string Fchh { get; set; } [JsonProperty("cityid")] public string CityId { get; set; } [JsonProperty("temp1")] public string Temp1 { get; set; } [JsonProperty("temp2")] public string Temp2 { get; set; } [JsonProperty("temp3")] public string Temp3 { get; set; } [JsonProperty("temp4")] public string Temp4 { get; set; } [JsonProperty("temp5")] public string Temp5 { get; set; } [JsonProperty("temp6")] public string Temp6 { get; set; } [JsonProperty("tempF1")] public string TempF1 { get; set; } [JsonProperty("tempF2")] public string TempF2 { get; set; } [JsonProperty("tempF3")] public string TempF3 { get; set; } [JsonProperty("tempF4")] public string TempF4 { get; set; } [JsonProperty("tempF5")] public string TempF5 { get; set; } [JsonProperty("tempF6")] public string TempF6 { get; set; } [JsonProperty("weather1")] public string Weather1 { get; set; } [JsonProperty("weather2")] public string Weather2 { get; set; } [JsonProperty("weather3")] public string Weather3 { get; set; } [JsonProperty("weather4")] public string Weather4 { get; set; } [JsonProperty("weather5")] public string Weather5 { get; set; } [JsonProperty("weather6")] public string Weather6 { get; set; } [JsonProperty("img1")] public string Img1 { get; set; } [JsonProperty("img2")] public string Img2 { get; set; } [JsonProperty("img3")] public string Img3 { get; set; } [JsonProperty("img4")] public string Img4 { get; set; } [JsonProperty("img5")] public string Img5 { get; set; } [JsonProperty("img6")] public string Img6 { get; set; } [JsonProperty("img7")] public string Img7 { get; set; } [JsonProperty("img8")] public string Img8 { get; set; } [JsonProperty("img9")] public string Img9 { get; set; } [JsonProperty("img10")] public string Img10 { get; set; } [JsonProperty("img11")] public string Img11 { get; set; } [JsonProperty("img12")] public string Img12 { get; set; } [JsonProperty("wind1")] public string Wind1 { get; set; } [JsonProperty("wind2")] public string Wind2 { get; set; } [JsonProperty("wind3")] public string Wind3 { get; set; } [JsonProperty("wind4")] public string Wind4 { get; set; } [JsonProperty("wind5")] public string Wind5 { get; set; } [JsonProperty("wind6")] public string Wind6 { get; set; } [JsonProperty("fx1")] public string Fx1 { get; set; } [JsonProperty("fx2")] public string Fx2 { get; set; } [JsonProperty("fl1")] public string Fl1 { get; set; } [JsonProperty("fl2")] public string Fl2 { get; set; } [JsonProperty("fl3")] public string Fl3 { get; set; } [JsonProperty("fl4")] public string Fl4 { get; set; } [JsonProperty("fl5")] public string Fl5 { get; set; } [JsonProperty("fl6")] public string Fl6 { get; set; } [JsonProperty("img_single")] public string Img_single { get; set; } [JsonProperty("img_title_single")] public string Img_title_single { get; set; } [JsonProperty("img_title1")] public string Img_title1 { get; set; } [JsonProperty("img_title2")] public string Img_title2 { get; set; } [JsonProperty("img_title3")] public string Img_title3 { get; set; } [JsonProperty("img_title4")] public string Img_title4 { get; set; } [JsonProperty("img_title5")] public string Img_title5 { get; set; } [JsonProperty("img_title6")] public string Img_title6 { get; set; } [JsonProperty("img_title7")] public string Img_title7 { get; set; } [JsonProperty("img_title8")] public string Img_title8 { get; set; } [JsonProperty("img_title9")] public string Img_title9 { get; set; } [JsonProperty("img_title10")] public string Img_title10 { get; set; } [JsonProperty("img_title11")] public string Img_title11 { get; set; } [JsonProperty("img_title12")] public string Img_title12 { get; set; } [JsonProperty("index")] public string Index { get; set; } [JsonProperty("index_d")] public string Index_d { get; set; } [JsonProperty("index48")] public string Index48 { get; set; } [JsonProperty("index48_d")] public string Index48_d { get; set; } [JsonProperty("index_uv")] public string Index_uv { get; set; } [JsonProperty("index48_uv")] public string Index48_uv { get; set; } [JsonProperty("index_xc")] public string Index_xc { get; set; } [JsonProperty("index_tr")] public string Index_tr { get; set; } [JsonProperty("index_co")] public string Index_co { get; set; } [JsonProperty("st1")] public string St1 { get; set; } [JsonProperty("st2")] public string St2 { get; set; } [JsonProperty("st3")] public string St3 { get; set; } [JsonProperty("st4")] public string St4 { get; set; } [JsonProperty("st5")] public string St5 { get; set; } [JsonProperty("st6")] public string St6 { get; set; } [JsonProperty("index_cl")] public string Index_cl { get; set; } [JsonProperty("index_ls")] public string Index_ls { get; set; } [JsonProperty("index_ag")] public string Index_ag { get; set; } } /// <summary> /// 天气实体类 /// </summary> [DataContract] public class YemlWeather { [JsonProperty("weatherinfo")] public WeatherInformation weatherinfo { get; set; } } }
我序列化json用的是Newtonsoft.Json.dll.zip