java实现---中央气象局天气预报接口
一、说明
天气预报的webService地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx
(天气预报 Web 服务,数据每2.5小时左右自动更新一次,准确可靠。包括 340 多个中国主要城市和 60 多个国外主要城市三日内的天气预报数据。此天气预报Web Services请不要用于任何商业目的,若有需要请联系我们,欢迎技术交流。 QQ:8409035)
二、相关信息调用举例以及说明
1、新建一个Java类:WeatherUtil.java
- import java.io.BufferedReader;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.net.SocketTimeoutException;
- import java.net.URL;
- import java.net.URLConnection;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Calendar;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import net.sf.json.JSONObject;
- /**
- * java调用中央气象局天气预报接口
- *
- * @author Administrator
- *
- */
- public class WeatherUtil {
- /**
- * 获取一周天气<br>
- * 方 法 名:getWeekWeatherMap <br>
- * @param Cityid 城市编码
- */
- public static List<Map<String, Object>> getWeekWeatherMap(String Cityid)
- throws IOException, NullPointerException {
- // 连接中央气象台的API
- URL url = new URL("http://m.weather.com.cn/data/" + Cityid + ".html");
- URLConnection connectionData = url.openConnection();
- connectionData.setConnectTimeout(1000);
- // 得到1到6天的天气情况
- List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
- try {
- BufferedReader br = new BufferedReader(new InputStreamReader(
- connectionData.getInputStream(), "UTF-8"));
- StringBuilder sb = new StringBuilder();
- String line = null;
- while ((line = br.readLine()) != null)
- sb.append(line);
- String datas = sb.toString();
- System.out.println(datas);
- JSONObject jsonData = JSONObject.fromObject(datas);
- JSONObject info = jsonData.getJSONObject("weatherinfo");
- for (int i = 1; i <= 6; i++) {
- // 得到未来6天的日期
- Calendar cal = Calendar.getInstance();
- cal.add(Calendar.DAY_OF_YEAR, i - 1);
- Date date = cal.getTime();
- SimpleDateFormat sf = new SimpleDateFormat("yyyy年MM月dd日");
- Map<String, Object> map = new HashMap<String, Object>();
- map.put("city", info.getString("city").toString());// 城市
- map.put("date_y", sf.format(date));// 日期
- map.put("week", getWeek(cal.get(Calendar.DAY_OF_WEEK)));// 星期
- map.put("fchh", info.getString("fchh").toString());// 发布时间
- map.put("weather", info.getString("weather" + i).toString());// 天气
- map.put("temp", info.getString("temp" + i).toString());// 温度
- map.put("wind", info.getString("wind" + i).toString());// 风况
- map.put("fl", info.getString("fl" + i).toString());// 风速
- // map.put("index", info.getString("index").toString());//
- // 今天的穿衣指数
- // map.put("index_uv", info.getString("index_uv").toString());//
- // 紫外指数
- // map.put("index_tr", info.getString("index_tr").toString());//
- // 旅游指数
- // map.put("index_co", info.getString("index_co").toString());//
- // 舒适指数
- // map.put("index_cl", info.getString("index_cl").toString());//
- // 晨练指数
- // map.put("index_xc", info.getString("index_xc").toString());//
- // 洗车指数
- // map.put("index_d", info.getString("index_d").toString());//
- // 天气详细穿衣指数
- list.add(map);
- }
- } catch (SocketTimeoutException e) {
- System.out.println("连接超时");
- } catch (FileNotFoundException e) {
- System.out.println("加载文件出错");
- }
- return list;
- }
- /**
- *
- * 获取实时天气1<br>
- * 方 法 名: getTodayWeather <br>
- *
- * @param Cityid
- * 城市编码
- */
- public static Map<String, Object> getTodayWeather1(String Cityid)
- throws IOException, NullPointerException {
- // 连接中央气象台的API
- URL url = new URL("http://www.weather.com.cn/data/sk/" + Cityid
- + ".html");
- URLConnection connectionData = url.openConnection();
- connectionData.setConnectTimeout(1000);
- Map<String, Object> map = new HashMap<String, Object>();
- try {
- BufferedReader br = new BufferedReader(new InputStreamReader(
- connectionData.getInputStream(), "UTF-8"));
- StringBuilder sb = new StringBuilder();
- String line = null;
- while ((line = br.readLine()) != null)
- sb.append(line);
- String datas = sb.toString();
- System.out.println(datas);
- JSONObject jsonData = JSONObject.fromObject(datas);
- JSONObject info = jsonData.getJSONObject("weatherinfo");
- map.put("city", info.getString("city").toString());// 城市
- map.put("temp", info.getString("temp").toString());// 温度
- map.put("WD", info.getString("WD").toString());// 风向
- map.put("WS", info.getString("WS").toString());// 风速
- map.put("SD", info.getString("SD").toString());// 湿度
- map.put("time", info.getString("time").toString());// 发布时间
- } catch (SocketTimeoutException e) {
- System.out.println("连接超时");
- } catch (FileNotFoundException e) {
- System.out.println("加载文件出错");
- }
- return map;
- }
- /**
- *
- * 获取实时天气2<br>
- * 方 法 名: getTodayWeather <br>
- *
- * @param Cityid
- * 城市编码
- */
- public static Map<String, Object> getTodayWeather2(String Cityid)
- throws IOException, NullPointerException {
- // 连接中央气象台的API
- URL url = new URL("http://www.weather.com.cn/data/cityinfo/" + Cityid
- + ".html");
- URLConnection connectionData = url.openConnection();
- connectionData.setConnectTimeout(1000);
- Map<String, Object> map = new HashMap<String, Object>();
- try {
- BufferedReader br = new BufferedReader(new InputStreamReader(
- connectionData.getInputStream(), "UTF-8"));
- StringBuilder sb = new StringBuilder();
- String line = null;
- while ((line = br.readLine()) != null)
- sb.append(line);
- String datas = sb.toString();
- System.out.println(datas);
- JSONObject jsonData = JSONObject.fromObject(datas);
- JSONObject info = jsonData.getJSONObject("weatherinfo");
- map.put("city", info.getString("city").toString());// 城市
- map.put("temp1", info.getString("temp1").toString());// 最高温度
- map.put("temp2", info.getString("temp2").toString());// 最低温度
- map.put("weather", info.getString("weather").toString());//天气
- map.put("ptime", info.getString("ptime").toString());// 发布时间
- } catch (SocketTimeoutException e) {
- System.out.println("连接超时");
- } catch (FileNotFoundException e) {
- System.out.println("加载文件出错");
- }
- return map;
- }
- private static String getWeek(int iw) {
- String weekStr = "";
- switch (iw) {
- case 1:
- weekStr = "星期天";
- break;
- case 2:
- weekStr = "星期一";
- break;
- case 3:
- weekStr = "星期二";
- break;
- case 4:
- weekStr = "星期三";
- break;
- case 5:
- weekStr = "星期四";
- break;
- case 6:
- weekStr = "星期五";
- break;
- case 7:
- weekStr = "星期六";
- break;
- default:
- break;
- }
- return weekStr;
- }
- public static void main(String[] args) {
- try {
- //测试获取实时天气1(包含风况,湿度)
- Map<String, Object> map = getTodayWeather1("101010100");
- System.out.println(map.get("city") + "\t" + map.get("temp")
- + "\t" + map.get("WD") + "\t" + map.get("WS")
- + "\t" + map.get("SD") + "\t" + map.get("time"));
- //测试获取实时天气2(包含天气,温度范围)
- Map<String, Object> map2 = getTodayWeather2("101010100");
- System.out.println(map2.get("city") + "\t" + map2.get("temp1")
- + "\t" + map2.get("temp2") + "\t" + map2.get("weather")
- + "\t" + map2.get("ptime"));
- //测试获取一周天气
- List<Map<String, Object>> listData = getWeekWeatherMap("101010100");
- for (int j = 0; j < listData.size(); j++) {
- Map<String, Object> wMap = listData.get(j);
- System.out.println(wMap.get("city") + "\t" + wMap.get("date_y")
- + "\t" + wMap.get("week") + "\t" + wMap.get("weather")
- + "\t" + wMap.get("temp") + "\t" + wMap.get("wind")
- + "\t" + wMap.get("fl"));
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
java实现---中央气象局天气预报接口相关推荐
- 中央气象局天气预报接口---java实现
一:接口地址 接口地址: http://www.weather.com.cn/data/sk/101010100.html http://www.weather.com.cn/data/cityinf ...
- 中央气象局天气预报接口城市代码大全
最近做了一个天气预报应用,在寻找数据源的时候费了不少周折,原来的谷歌.新浪.雅虎等等API似乎都不能用了(也许是我申请不到KEY),最后用了中央气象局的接口. 下面是这些接口的地址,都是HTTP方式, ...
- 中央气象局天气预报城市对应的编码(到县为止)
按惯例AD下搜索易:http://www.i-ssy.com/ 你是否是一名搜索控? 你是否每天频繁的在不同的搜索引擎间来回穿梭?你是否厌倦了不停的打开浏览器.输入搜索引擎网址?使用搜索易吧,Ta将大 ...
- java ip调天气预报接口_JAVA + WeatherWebService 实现天气预报接口调取
两步完成接口调取 第一步:引入jar包 若在线jar包失效,私信我即可. 第二步:创建类实现 在JAVA项目中创建java类(我的是:WeatherUtil) 修改类中cityid为你需要展示的地区i ...
- Java: 聚合数据API接口调用城市天气预报
Java: 聚合数据API接口调用城市天气预报 点击进入[数据聚合_数据接口调用_开发者数据API开放平台](官网) 在pom文件中,加入依赖 <!--返回json数据--><dep ...
- java ip调天气预报接口_java调天气预报接口
国家气象局提供的天气预报接口 接口地址: http://www.weather.com.cn/data/sk/101010100.html http://www.weather.com.cn/data ...
- java天气预报免费接口api_NowAPI 的天气预报接口的实现
[实例简介] 实现 NowAPI(http://www.nowapi.com) 的 天气预报 接口 ,使用 java开发 ,用于 Android. 不完善之处,还请大家不吝赐教. [实例截图] [核心 ...
- 气象局天气预报信息接口实现
中国国家气象局天气预报接口总共提供了三个: http://www.weather.com.cn/data/sk/101010100.html http://www.weather.com.cn/dat ...
- Android:国家气象局天气预报接口JSON完全解析
天气预报的接口看这里:Android:国家气象局提供的天气预报接口(完整Json接口) 最近由于谷歌天气预报接口出现了一些小问题,没办法,只能重新写一下国家气象局天气预报接口JSON完全解析,程序包括 ...
最新文章
- qdialog 返回值_python-PyQt QDialog返回响应是或否
- Tcpdump(linux)下载、安装、使用说明
- php $y=$x^$y;,PHP语法一
- MyBatis中Mapper代理方式
- 发动机冷启动和热启动的区别_「牛车实验室」AGM自动启停蓄电池解读 和普通蓄电池到底有什么区别...
- 【小技巧】【Java】 创建指定数目m的Set数组
- python从网址爬图片协程_python 用 gevent 协程抓取海量网页
- socket 客户端-服务器的创建--day28
- css基础内容之background
- virtualbox报错:Failed, trying without DKMS的解决方案
- 再见,Python!骨灰级程序员:用对这个方法,编程能力暴增!
- springBoot 2.2.6 项目中html页面样式效果丢失
- 【剑指 offer】(31)—— 连续子数组的最大和(动态规划)
- 奇异的Pinvoke调用
- 12 个顶级 Bug 跟踪工具
- 使用正则表达式大写SQL关键字
- 使用VMware创建一个虚拟机,并安装乌班图系统
- [3-6] xp系统主题下载最新xp系统软件更新 [yeskm整理]
- mybatis逻辑删除
- 医疗健康大数据:应用实例与系统分析
热门文章
- 键盘按键F1-F12失效的解决办法(ArchLinux)
- GMOS6803为7频段高精度RTK系统应用桥梁监测
- kali-WHOIS 域名信息收集
- ubuntu18.04/centos7.9-Redis-Zabbix相关操作
- 【游戏通关】解题报告
- mysql慢查询优化_常见mysql的慢查询优化方式
- php 代码 骂人,网页前台通过js非法字符过滤代码(骂人的话等等)_javascript技巧
- Android程序的升级
- word文件如何设置编辑限制?如何删除编辑限制?
- 1.Oracle中的表空间