说明

经过搜集和参考网上的相关资料,Java获取天气情况数据的通用步骤如下:

  • 调用天气接口api;
  • 解析返回的XML 或 JSON数据;

这里我并不去用代码实现一个Demo,而是记录一下思路,以后有需求便可以不需要再去调研了。

调用天气接口
API调用方式,无非就是根据城市名称或者城市代码获取到接口返回的XML 或 JSON数据,以下几种天气接口方式可以参考使用。

方式一:wthrcdn接口

根据城市名称获取天气信息:http://wthrcdn.etouch.cn/weather_mini?city=城市中文名
根据城市ID获取天气信息:http://wthrcdn.etouch.cn/weather_mini?citykey=城市code
获取城市列表信息:https://yiyingcanfeng.github.io/data/2019-03-13-cn_weather_citylist.json
example:http://wthrcdn.etouch.cn/weather_mini?city=合肥

这种方式返回的是JSON格式的数据,状态为1000代表接口调用成功!


{"data":{"yesterday":{"date":"21日星期一","high":"高温 10℃","fx":"南风","low":"低温 -4℃","fl":"<![CDATA[1级]]>","type":"霾"},"city":"合肥","forecast":[{"date":"22日星期二","high":"高温 10℃","fengli":"<![CDATA[2级]]>","low":"低温 -1℃","fengxiang":"东南风","type":"多云"},{"date":"23日星期三","high":"高温 10℃","fengli":"<![CDATA[2级]]>","low":"低温 -1℃","fengxiang":"西北风","type":"阴"},{"date":"24日星期四","high":"高温 10℃","fengli":"<![CDATA[2级]]>","low":"低温 -1℃","fengxiang":"北风","type":"多云"},{"date":"25日星期五","high":"高温 10℃","fengli":"<![CDATA[3级]]>","low":"低温 1℃","fengxiang":"东风","type":"多云"},{"date":"26日星期六","high":"高温 9℃","fengli":"<![CDATA[2级]]>","low":"低温 0℃","fengxiang":"东风","type":"阴"}],"ganmao":"感冒高发期,尽量避免外出,外出戴口罩防护。","wendu":"-1"},"status":1000,"desc":"OK"
}

方式二:城市天气预报WEB服务接口(http://www.webxml.com.cn/zh_cn/index.aspx)

天气信息API:http://ws.webxml.com.cn/WebServices/WeatherWS.asmx
具体使用方式参考:接口示例、接口帮助文档、服务说明等,这种方式返回的是XML格式的数据。

example:

获得中国省份、直辖市、地区和与之对应的ID:http://ws.webxml.com.cn/WebServices/WeatherWS.asmx/getRegionProvince
根据上面的ID获得支持的城市/地区名称和与之对应的ID:http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?op=getSupportCityDataset
获得支持的城市/地区名称和与之对应的ID:http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?op=getSupportCityString

获得天气预报数据:http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?op=getWeather

以武汉为例:

<?xml version="1.0" encoding="UTF-8"?>
-
<ArrayOfString xmlns="http://WebXml.com.cn/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <string>湖北</string> <string>武汉</string> <string>57494</string> <string>57494.jpg</string> <string>2020-12-22 11:32:08</string> <string>-3℃/5℃</string> <string>12月22日 多云转晴</string> <string>无持续风向微风</string> <string>1.gif</string> <string>1.gif</string> <string>今日天气实况:气温:3℃;风向/风力:西南风 3级;湿度:50%;空气质量:较差;紫外线强度:中等</string> <string>穿衣指数:天气较冷,建议着冬服。 感冒指数:户外寒冷,避免感冒。 运动指数:天气较好,无雨水困扰,但考虑气温较低,适当运动。 洗车指数:较适宜洗车,未来一天无雨,风力较小,擦洗一新的汽车至少能保持一天。 晾晒指数:天气不错,适宜晾晒。赶紧把久未见阳光的衣物搬出来吸收一下太阳的味道吧! 旅游指数:多云,同时有微风相伴,但温度较低,天气冷,请若外出请注意防寒保暖。 路况指数:天气较好,路面比较干燥,路况较好。 空气污染指数:气象条件较不利于空气污染物稀释、扩散和清除,请适当减少室外活动时间。 紫外线指数:属中等强度紫外线辐射天气,外出时建议涂擦SPF高于15、PA+的防晒护肤品,戴帽子、太阳镜。</string> <string>0℃/9℃</string> <string>12月23日 多云</string> <string>无持续风向微风</string> <string>2.gif</string> <string>7.gif</string> <string>-1℃/5℃</string> <string>12月24日 多云转小雨</string> <string>无持续风向微风</string> <string>9.gif</string> <string>7.gif</string> <string>武汉市位于江汉平原东部,长江中游与长江、汉水交汇处。东经113°41′-115°05′,北纬29°58′-31°22′。武汉市地理位置优越,长江及其最大支流汉江交汇于此,将武汉市区天然分成汉口、汉阳和武昌三镇,武汉是我国水陆交通枢纽,控长江中游之咽喉,扼南北交通之要冲,素有“九省通衢”之称,现全市货运吞吐量达亿吨以上。优越的地理位置,成为历代兵家争夺的战略要地。三国时,武汉东湖附近曾是刘备、孙权、曹操进行军事、政治活动的场所,现在留下的有刘备郊天台、吴王庙、曹操庙、洪山宝塔等古建筑。武汉现已发展为中国中部地区工业、金融、商业、科学、文化教育中心。武汉市属亚热带湿润季风气候,雨量充沛、日照充足,四季分明。总体气候环境良好,近几年30年来,年均降雨量1269毫米,且多集中在6-8月。年均气温15.8℃-17.5℃,年无霜期一般为211天-272天,年日照总时数1810小时-2100小时。景观:武当山、长江三峡、神农架等。</string>
</ArrayOfString>

方式三:中国天气网接口(http://www.weather.com.cn/)

根据城市ID获取天气信息:http://www.weather.com.cn/data/sk/城市code.html
example:http://www.weather.com.cn/data/sk/101220101.html

这种方式返回的是JSON格式的数据,获取到的天气状况数据比较少,不推荐使用!

{"weatherinfo":{"city":"合肥","cityid":"101220101","temp":"20.5","WD":"东北风","WS":"小于3级","SD":"98%","AP":"1001.8hPa","njd":"暂无实况","WSE":"<3","time":"17:50","sm":"3.6","isRadar":"1","Radar":"JC_RADAR_AZ9551_JB"}
}

方式四:sojson(https://www.sojson.com/blog/305.html)

这个网站很良心,关于如何调用、遇到的问题等都有详细的说明和答疑;
这种方式和第一种本质是一样的,使用的CDN缓存更新天气数据;
方式五:高德开放平台天气查询接口(https://lbs.amap.com/api/webservice/guide/api/weatherinfo/)

天气查询是一个简单的HTTP接口,根据用户输入的adcode,查询目标区域当前/未来的天气情况;
使用开放平台的API需要申请一个Key(申请”web服务 API”的密钥);
天气查询API服务地址、请求参数、返回数据结构介绍的很清楚。
example:https://restapi.amap.com/v3/weather/weatherInfo?city=110101&key=<用户key>

方式六:其他开放平台天气查询接口

如百度地图开放平台:http://lbsyun.baidu.com/index.php?title=car/api/weather

解析返回的XML 或 JSON数据的方式

1、如果使用的是SpringBoot,借助restTemplate调用REST风格的API接口:(restTemplate封装了HttpClient并进行http通信)


String weatherUrl = "https://restapi.amap.com/v3/weather/weatherInfo?city=110101&key=自己的key";
// restTemplate请求目标url并得到响应内容
ResponseEntity<String> weatherEntity = restTemplate.getForEntity(weatherUrl, String.class);
// 响应的正文内容
String weatherBody = weatherEntity.getBody();
// 转JSONObject
JSONObject weatherObject = JSONObject.parseObject(weatherBody);

2、也可以使用java.net包下的URL、及IO流进行http通信和对象的反序列化。

3、也可以使用HttpClient对象进行http请求,并将得到的响应数据进行转Java对象处理。

Java获取天气情况的方式相关推荐

  1. JAVA获取天气情况

    转载本文章请标明作者和出处 本文出自<Darwin的程序空间> 背景 笔者曾经想在情人节送给女朋友一个礼物,就是可以把每天的天气情况加上一些暖心的小情话每天给对象发送邮件或者是短信(收费) ...

  2. Python开发之路(5)— 使用HTTP获取天气情况

    Python开发之路(5)- 使用HTTP获取天气情况 一.心知天气 首先,我们需要使用到的一个平台就是心知天气:https://www.seniverse.com/ 进入心知天气的网站,注册一个账号 ...

  3. php获取天气组件,php获取中国天气,中国天气插件说明,根据IP获取天气情况

    PHP » 编程开发 » php获取中国天气,中国天气插件说明,根据IP获取天气情况 php获取中国天气,中国天气插件说明,根据IP获取天气情况 今天客户端需要获取天气情况,于是查询了一下! 看一下要 ...

  4. 可以实获取天气情况的html,电脑桌面上显示天气情况的实现方法

    以前看天气预报都是等着每天的新闻联播,稍有点事情耽搁了就不知道明日的天气了.自从有了网络后一切都方便多了,只要百度搜索或者在QQ上随时可以查看天气情况.相比之前来说这已经是非常便利的吧,但人是永远不知 ...

  5. 微信小程序—调用API获取天气情况

    1.在微信开发者工具中的.js文档参考wx.getLocation函数获取当前地理位置,注意在app.json文件中permission授权. "permission": {&qu ...

  6. android往天气接口里面传城市,Android使用中国天气网API数据通过城市名称获取天气情况...

    项目要求在应用首页面展示本地当日天气的概况,首先想到的是google和雅虎,前者很久之前接触过,听说后来用不了了,后者由于邮箱事件的缘故个人不喜欢(虽然貌似苹果也用雅虎的天气预报),之后又想到了前段时 ...

  7. java获取天气的方法

    用java的方式封装了一个天气的接口,查询了好多,都是要收费的,但是还是有免费的方式, 这块我用的是和风天气的接口封装的方法如下: /**** 获取实时天气1<br>* 方 法 名: ge ...

  8. java获取天气接口

    如下图 package com.octv.board.common.utils;import java.io.*; import java.net.SocketTimeoutException; im ...

  9. java获取时间戳有多少种方式,给我写出5种以上示例

    Java中获取时间戳的方式有很多种, 以下是几种常用的方法: 使用System.currentTimeMillis()方法: long timestamp= System.currentTimeMil ...

最新文章

  1. Spark学习之路 (十五)SparkCore的源码解读(一)启动脚本
  2. flask html 得到文本框 input的内容_【笔记7】HTML及其常见标签
  3. c++ 该使用类内初始值么?
  4. AWS SQS和Spring JMS集成
  5. 收集的安装VS2005 sp1的注意事项
  6. 从Jupyter Notebook到脚本
  7. Jconsole查看Weblogic自定义MBean
  8. 电机控制系统php,电机控制系统的未来发展变化趋势
  9. 【java】序列化:ProtoBuf 与 JSON 的比较
  10. ajax 数据data,ajax取出data数据库
  11. freebsd 安装mysql_Freebsd中mysql安装及使用笔记
  12. ArrayList的add方法值被覆盖(android项目)
  13. Mentor.Graphics.DesignAnalyst 2005.1 1CD
  14. 计算机制图师岗位技能要求,机械制图员
  15. 如何使用 LumaQQ 核心 API
  16. Centos7 搭建 Svn+ReviewBoard
  17. python跳出双循环break图例
  18. 一款简易低成本智能割草机的制作——硬件篇
  19. C# MessageBox.Show 用法
  20. Max导Unity Humanoid模型

热门文章

  1. 喝奶粉的宝宝一天喝多少水 奶粉喂养的宝宝每天要喝多少水
  2. Java注解篇(一)四大元注解@Target@Retention@Documented注解
  3. 微信小程序学习笔记-自定义组件
  4. outlook域用户名怎么填_内网渗透 | 搭建域环境
  5. linux如何安装mysql客户端(只是客户端)
  6. C#教程9:C#方法(Methods)
  7. linux服务器修改dns_更改DNS服务器的终极指南
  8. 2019CSUST选拔赛
  9. java八股文指的是什么_党八股文指的是什么
  10. [附源码]计算机毕业设计JAVA食堂线上点餐系统