一、说明

天气预报的webService地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx

(天气预报 Web 服务,数据每2.5小时左右自动更新一次,准确可靠。包括 340 多个中国主要城市和 60 多个国外主要城市三日内的天气预报数据。此天气预报Web Services请不要用于任何商业目的,若有需要请联系我们,欢迎技术交流。 QQ:8409035)

二、相关信息调用举例以及说明

1、新建一个Java类:WeatherUtil.java

[java] view plain copy
  1. import java.io.BufferedReader;
  2. import java.io.FileNotFoundException;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.net.SocketTimeoutException;
  6. import java.net.URL;
  7. import java.net.URLConnection;
  8. import java.text.SimpleDateFormat;
  9. import java.util.ArrayList;
  10. import java.util.Calendar;
  11. import java.util.Date;
  12. import java.util.HashMap;
  13. import java.util.List;
  14. import java.util.Map;
  15. import net.sf.json.JSONObject;
  16. /**
  17. * java调用中央气象局天气预报接口
  18. *
  19. * @author Administrator
  20. *
  21. */
  22. public class WeatherUtil {
  23. /**
  24. * 获取一周天气<br>
  25. * 方 法 名:getWeekWeatherMap <br>
  26. * @param Cityid  城市编码
  27. */
  28. public static List<Map<String, Object>> getWeekWeatherMap(String Cityid)
  29. throws IOException, NullPointerException {
  30. // 连接中央气象台的API
  31. URL url = new URL("http://m.weather.com.cn/data/" + Cityid + ".html");
  32. URLConnection connectionData = url.openConnection();
  33. connectionData.setConnectTimeout(1000);
  34. // 得到1到6天的天气情况
  35. List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
  36. try {
  37. BufferedReader br = new BufferedReader(new InputStreamReader(
  38. connectionData.getInputStream(), "UTF-8"));
  39. StringBuilder sb = new StringBuilder();
  40. String line = null;
  41. while ((line = br.readLine()) != null)
  42. sb.append(line);
  43. String datas = sb.toString();
  44. System.out.println(datas);
  45. JSONObject jsonData = JSONObject.fromObject(datas);
  46. JSONObject info = jsonData.getJSONObject("weatherinfo");
  47. for (int i = 1; i <= 6; i++) {
  48. // 得到未来6天的日期
  49. Calendar cal = Calendar.getInstance();
  50. cal.add(Calendar.DAY_OF_YEAR, i - 1);
  51. Date date = cal.getTime();
  52. SimpleDateFormat sf = new SimpleDateFormat("yyyy年MM月dd日");
  53. Map<String, Object> map = new HashMap<String, Object>();
  54. map.put("city", info.getString("city").toString());// 城市
  55. map.put("date_y", sf.format(date));// 日期
  56. map.put("week", getWeek(cal.get(Calendar.DAY_OF_WEEK)));// 星期
  57. map.put("fchh", info.getString("fchh").toString());// 发布时间
  58. map.put("weather", info.getString("weather" + i).toString());// 天气
  59. map.put("temp", info.getString("temp" + i).toString());// 温度
  60. map.put("wind", info.getString("wind" + i).toString());// 风况
  61. map.put("fl", info.getString("fl" + i).toString());// 风速
  62. // map.put("index", info.getString("index").toString());//
  63. // 今天的穿衣指数
  64. // map.put("index_uv", info.getString("index_uv").toString());//
  65. // 紫外指数
  66. // map.put("index_tr", info.getString("index_tr").toString());//
  67. // 旅游指数
  68. // map.put("index_co", info.getString("index_co").toString());//
  69. // 舒适指数
  70. // map.put("index_cl", info.getString("index_cl").toString());//
  71. // 晨练指数
  72. // map.put("index_xc", info.getString("index_xc").toString());//
  73. // 洗车指数
  74. // map.put("index_d", info.getString("index_d").toString());//
  75. // 天气详细穿衣指数
  76. list.add(map);
  77. }
  78. } catch (SocketTimeoutException e) {
  79. System.out.println("连接超时");
  80. } catch (FileNotFoundException e) {
  81. System.out.println("加载文件出错");
  82. }
  83. return list;
  84. }
  85. /**
  86. *
  87. * 获取实时天气1<br>
  88. * 方 法 名: getTodayWeather <br>
  89. *
  90. * @param Cityid
  91. *            城市编码
  92. */
  93. public static Map<String, Object> getTodayWeather1(String Cityid)
  94. throws IOException, NullPointerException {
  95. // 连接中央气象台的API
  96. URL url = new URL("http://www.weather.com.cn/data/sk/" + Cityid
  97. + ".html");
  98. URLConnection connectionData = url.openConnection();
  99. connectionData.setConnectTimeout(1000);
  100. Map<String, Object> map = new HashMap<String, Object>();
  101. try {
  102. BufferedReader br = new BufferedReader(new InputStreamReader(
  103. connectionData.getInputStream(), "UTF-8"));
  104. StringBuilder sb = new StringBuilder();
  105. String line = null;
  106. while ((line = br.readLine()) != null)
  107. sb.append(line);
  108. String datas = sb.toString();
  109. System.out.println(datas);
  110. JSONObject jsonData = JSONObject.fromObject(datas);
  111. JSONObject info = jsonData.getJSONObject("weatherinfo");
  112. map.put("city", info.getString("city").toString());// 城市
  113. map.put("temp", info.getString("temp").toString());// 温度
  114. map.put("WD", info.getString("WD").toString());// 风向
  115. map.put("WS", info.getString("WS").toString());// 风速
  116. map.put("SD", info.getString("SD").toString());// 湿度
  117. map.put("time", info.getString("time").toString());// 发布时间
  118. } catch (SocketTimeoutException e) {
  119. System.out.println("连接超时");
  120. } catch (FileNotFoundException e) {
  121. System.out.println("加载文件出错");
  122. }
  123. return map;
  124. }
  125. /**
  126. *
  127. * 获取实时天气2<br>
  128. * 方 法 名: getTodayWeather <br>
  129. *
  130. * @param Cityid
  131. *            城市编码
  132. */
  133. public static Map<String, Object> getTodayWeather2(String Cityid)
  134. throws IOException, NullPointerException {
  135. // 连接中央气象台的API
  136. URL url = new URL("http://www.weather.com.cn/data/cityinfo/" + Cityid
  137. + ".html");
  138. URLConnection connectionData = url.openConnection();
  139. connectionData.setConnectTimeout(1000);
  140. Map<String, Object> map = new HashMap<String, Object>();
  141. try {
  142. BufferedReader br = new BufferedReader(new InputStreamReader(
  143. connectionData.getInputStream(), "UTF-8"));
  144. StringBuilder sb = new StringBuilder();
  145. String line = null;
  146. while ((line = br.readLine()) != null)
  147. sb.append(line);
  148. String datas = sb.toString();
  149. System.out.println(datas);
  150. JSONObject jsonData = JSONObject.fromObject(datas);
  151. JSONObject info = jsonData.getJSONObject("weatherinfo");
  152. map.put("city", info.getString("city").toString());// 城市
  153. map.put("temp1", info.getString("temp1").toString());// 最高温度
  154. map.put("temp2", info.getString("temp2").toString());// 最低温度
  155. map.put("weather", info.getString("weather").toString());//天气
  156. map.put("ptime", info.getString("ptime").toString());// 发布时间
  157. } catch (SocketTimeoutException e) {
  158. System.out.println("连接超时");
  159. } catch (FileNotFoundException e) {
  160. System.out.println("加载文件出错");
  161. }
  162. return map;
  163. }
  164. private static String getWeek(int iw) {
  165. String weekStr = "";
  166. switch (iw) {
  167. case 1:
  168. weekStr = "星期天";
  169. break;
  170. case 2:
  171. weekStr = "星期一";
  172. break;
  173. case 3:
  174. weekStr = "星期二";
  175. break;
  176. case 4:
  177. weekStr = "星期三";
  178. break;
  179. case 5:
  180. weekStr = "星期四";
  181. break;
  182. case 6:
  183. weekStr = "星期五";
  184. break;
  185. case 7:
  186. weekStr = "星期六";
  187. break;
  188. default:
  189. break;
  190. }
  191. return weekStr;
  192. }
  193. public static void main(String[] args) {
  194. try {
  195. //测试获取实时天气1(包含风况,湿度)
  196. Map<String, Object> map = getTodayWeather1("101010100");
  197. System.out.println(map.get("city") + "\t" + map.get("temp")
  198. + "\t" + map.get("WD") + "\t" + map.get("WS")
  199. + "\t" + map.get("SD") + "\t" + map.get("time"));
  200. //测试获取实时天气2(包含天气,温度范围)
  201. Map<String, Object> map2 = getTodayWeather2("101010100");
  202. System.out.println(map2.get("city") + "\t" + map2.get("temp1")
  203. + "\t" + map2.get("temp2") + "\t" + map2.get("weather")
  204. + "\t" + map2.get("ptime"));
  205. //测试获取一周天气
  206. List<Map<String, Object>> listData = getWeekWeatherMap("101010100");
  207. for (int j = 0; j < listData.size(); j++) {
  208. Map<String, Object> wMap = listData.get(j);
  209. System.out.println(wMap.get("city") + "\t" + wMap.get("date_y")
  210. + "\t" + wMap.get("week") + "\t" + wMap.get("weather")
  211. + "\t" + wMap.get("temp") + "\t" + wMap.get("wind")
  212. + "\t" + wMap.get("fl"));
  213. }
  214. } catch (Exception e) {
  215. e.printStackTrace();
  216. }
  217. }
  218. }

java实现---中央气象局天气预报接口相关推荐

  1. 中央气象局天气预报接口---java实现

    一:接口地址 接口地址: http://www.weather.com.cn/data/sk/101010100.html http://www.weather.com.cn/data/cityinf ...

  2. 中央气象局天气预报接口城市代码大全

    最近做了一个天气预报应用,在寻找数据源的时候费了不少周折,原来的谷歌.新浪.雅虎等等API似乎都不能用了(也许是我申请不到KEY),最后用了中央气象局的接口. 下面是这些接口的地址,都是HTTP方式, ...

  3. 中央气象局天气预报城市对应的编码(到县为止)

    按惯例AD下搜索易:http://www.i-ssy.com/ 你是否是一名搜索控? 你是否每天频繁的在不同的搜索引擎间来回穿梭?你是否厌倦了不停的打开浏览器.输入搜索引擎网址?使用搜索易吧,Ta将大 ...

  4. java ip调天气预报接口_JAVA + WeatherWebService 实现天气预报接口调取

    两步完成接口调取 第一步:引入jar包 若在线jar包失效,私信我即可. 第二步:创建类实现 在JAVA项目中创建java类(我的是:WeatherUtil) 修改类中cityid为你需要展示的地区i ...

  5. Java: 聚合数据API接口调用城市天气预报

    Java: 聚合数据API接口调用城市天气预报 点击进入[数据聚合_数据接口调用_开发者数据API开放平台](官网) 在pom文件中,加入依赖 <!--返回json数据--><dep ...

  6. java ip调天气预报接口_java调天气预报接口

    国家气象局提供的天气预报接口 接口地址: http://www.weather.com.cn/data/sk/101010100.html http://www.weather.com.cn/data ...

  7. java天气预报免费接口api_NowAPI 的天气预报接口的实现

    [实例简介] 实现 NowAPI(http://www.nowapi.com) 的 天气预报 接口 ,使用 java开发 ,用于 Android. 不完善之处,还请大家不吝赐教. [实例截图] [核心 ...

  8. 气象局天气预报信息接口实现

    中国国家气象局天气预报接口总共提供了三个: http://www.weather.com.cn/data/sk/101010100.html http://www.weather.com.cn/dat ...

  9. Android:国家气象局天气预报接口JSON完全解析

    天气预报的接口看这里:Android:国家气象局提供的天气预报接口(完整Json接口) 最近由于谷歌天气预报接口出现了一些小问题,没办法,只能重新写一下国家气象局天气预报接口JSON完全解析,程序包括 ...

最新文章

  1. qdialog 返回值_python-PyQt QDialog返回响应是或否
  2. Tcpdump(linux)下载、安装、使用说明
  3. php $y=$x^$y;,PHP语法一
  4. MyBatis中Mapper代理方式
  5. 发动机冷启动和热启动的区别_「牛车实验室」AGM自动启停蓄电池解读 和普通蓄电池到底有什么区别...
  6. 【小技巧】【Java】 创建指定数目m的Set数组
  7. python从网址爬图片协程_python 用 gevent 协程抓取海量网页
  8. socket 客户端-服务器的创建--day28
  9. css基础内容之background
  10. virtualbox报错:Failed, trying without DKMS的解决方案
  11. 再见,Python!骨灰级程序员:用对这个方法,编程能力暴增!
  12. springBoot 2.2.6 项目中html页面样式效果丢失
  13. 【剑指 offer】(31)—— 连续子数组的最大和(动态规划)
  14. 奇异的Pinvoke调用
  15. 12 个顶级 Bug 跟踪工具
  16. 使用正则表达式大写SQL关键字
  17. 使用VMware创建一个虚拟机,并安装乌班图系统
  18. [3-6] xp系统主题下载最新xp系统软件更新 [yeskm整理]
  19. mybatis逻辑删除
  20. 医疗健康大数据:应用实例与系统分析

热门文章

  1. 键盘按键F1-F12失效的解决办法(ArchLinux)
  2. GMOS6803为7频段高精度RTK系统应用桥梁监测
  3. kali-WHOIS 域名信息收集
  4. ubuntu18.04/centos7.9-Redis-Zabbix相关操作
  5. 【游戏通关】解题报告
  6. mysql慢查询优化_常见mysql的慢查询优化方式
  7. php 代码 骂人,网页前台通过js非法字符过滤代码(骂人的话等等)_javascript技巧
  8. Android程序的升级
  9. word文件如何设置编辑限制?如何删除编辑限制?
  10. 1.Oracle中的表空间