博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信百度天气查询
阅读量:6161 次
发布时间:2019-06-21

本文共 9971 字,大约阅读时间需要 33 分钟。

想在微信上做个天气预报查询功能,发现百度api还挺好用的。简介下

/** * WxDaoImpl *  * @author xuyw * @email xyw10000@163.com * @date 2014-06-22 */

接口说明

依据经纬度/城市名查询天气的结果

接口演示样例

 

接口參数说明

參数类型 參数名称 是否必须 详细描写叙述
String ak true 开发人员密钥
String sn false 若用户所用ak的校验方式为sn校验时该參数必须。 ()
String location true 输入城市名或经纬度,城市名称如:北京,经纬度格式为lng,lat坐标如: location=116.305145,39.982368;城市天气预报中间"|"分隔,location=116.305145,39.982368| 122.305145,36.982368|….
String output false 输出的数据格式,默觉得xml格式,当output设置为’json’时,输出的为json格式的数据;
String coord_type false 请求參数坐标类型,默觉得gcj02经纬度坐标。同意的值为bd09ll、bd09mc、gcj02、wgs84。bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托坐标,gcj02表示经过国測局加密的坐标。wgs84表示gps获取的坐标。

返回结果

參数名称 含义 说明
currentCity 当前城市 返回城市名
status 返回结果状态信息  
date 当前时间 年-月-日
results 天气预报信息 白天可返回最近3天的天气情况(今天、明天、后天)、晚上可返回最近4天的天气情况(今天、明天、后天、大后天)
results.currentCity 当前城市  
results.weather_data weather_data.date 天气预报时间  
weather_data.dayPictureUrl 白天的天气预报图片url  
weather_data.nightPictureUrl 晚上的天气预报图片url  
weather_data.weather 天气状况 全部天气情况(”|”分隔符):晴|多云|阴|阵雨|雷阵雨|雷阵雨伴有冰雹|雨夹雪|小雨|中雨|大雨|暴雨|大暴雨|特大暴雨|阵雪|小雪|中雪|大雪|暴雪|雾|冻雨|沙尘暴|小雨转中雨|中雨转大雨|大雨转暴雨|暴雨转大暴雨|大暴雨转特大暴雨|小雪转中雪|中雪转大雪|大雪转暴雪|浮尘|扬沙|强沙尘暴|霾
weather_data.wind 风力  
weather_data.temperature 温度  

返回xml格式的数据

success
2013-07-18
北京市
周三(今天, 实时:24℃)
http://api.map.baidu.com/images/weather/day/duoyun.png
http://api.map.baidu.com/images/weather/night/duoyun.png
多云
微风
23℃~ 15℃
周四
http://api.map.baidu.com/images/weather/day/leizhenyu.png
http://api.map.baidu.com/images/weather/night/zhongyu.png
雷阵雨转中雨
微风
29~22℃
周五
http://api.map.baidu.com/images/weather/day/yin.png
http://api.map.baidu.com/images/weather/night/duoyun.png
阴转多云
微风
31~23℃
周六
http://api.map.baidu.com/images/weather/day/duoyun.png
http://api.map.baidu.com/images/weather/night/duoyun.png
多云
微风
31~24℃
合肥市
周三
http://api.map.baidu.com/images/weather/day/duoyun.png
http://api.map.baidu.com/images/weather/night/duoyun.png
多云
东风3-4级
27℃
周四
http://api.map.baidu.com/images/weather/day/duoyun.png
http://api.map.baidu.com/images/weather/night/duoyun.png
多云
东北风3-4级
35~27℃
周五
http://api.map.baidu.com/images/weather/day/duoyun.png
http://api.map.baidu.com/images/weather/night/duoyun.png
多云
南风
35~27℃
周六
http://api.map.baidu.com/images/weather/day/duoyun.png
http://api.map.baidu.com/images/weather/night/duoyun.png
多云
东风
34~27℃
阵雨
东北风3-4级
18℃

返回json格式的数据

{error: 0,status: "success",date: "2013-07-17",results: [{currentCity: "北京市",weather_data: [{date: "周三(今天, 实时:24℃)",dayPictureUrl: "http://api.map.baidu.com/images/weather/day/duoyun.png",nightPictureUrl: "http://api.map.baidu.com/images/weather/night/duoyun.png",weather: "多云",wind: "微风",temperature: "23℃~ 15℃"},{date: "明天(周四)",dayPictureUrl: "http://api.map.baidu.com/images/weather/day/leizhenyu.png",nightPictureUrl: "http://api.map.baidu.com/images/weather/night/zhongyu.png",weather: "雷阵雨转中雨",wind: "微风",temperature: "29~22℃"},{date: "后天(周五)",dayPictureUrl: "http://api.map.baidu.com/images/weather/day/yin.png",nightPictureUrl: "http://api.map.baidu.com/images/weather/night/duoyun.png",weather: "阴转多云",wind: "微风",temperature: "31~23℃"},{date: "大后天(周六)",dayPictureUrl: "http://api.map.baidu.com/images/weather/day/duoyun.png",nightPictureUrl: "http://api.map.baidu.com/images/weather/night/duoyun.png",weather: "多云",wind: "微风",temperature: "31~24℃"}]},{currentCity: "合肥市",weather_data: [{date: "今天(周三)",dayPictureUrl: "http://api.map.baidu.com/images/weather/day/duoyun.png",nightPictureUrl: "http://api.map.baidu.com/images/weather/night/duoyun.png",weather: "多云",wind: "东风3-4级",temperature: "27℃"},{date: "明天(周四)",dayPictureUrl: "http://api.map.baidu.com/images/weather/day/duoyun.png",nightPictureUrl: "http://api.map.baidu.com/images/weather/night/duoyun.png",weather: "多云",wind: "东北风3-4级",temperature: "35~27℃"},{date: "后天(周五)",dayPictureUrl: "http://api.map.baidu.com/images/weather/day/duoyun.png",nightPictureUrl: "http://api.map.baidu.com/images/weather/night/duoyun.png",weather: "多云",wind: "南风",temperature: "35~27℃"},{date: "大后天(周六)",dayPictureUrl: "http://api.map.baidu.com/images/weather/day/duoyun.png",nightPictureUrl: "http://api.map.baidu.com/images/weather/night/duoyun.png",weather: "多云",wind: "东风",temperature: "34~27℃"}]}]}
编写代码

/**     * 获取天气     * @param city     * @return     */	public static JSONObject getWeatherInfo(String city) {		JSONObject obj = JSONObject.fromObject(HttpUtil.getRequest(				GET_WEATHER_URL, "location:" + city, "output:json", "ak:"						+ Config.BAIDU_GEOCONV_KEY));		return obj;	}
返回结果

{"error":0,"status":"success","date":"2014-06-23","results":[{"currentCity":"乐平","weather_data":[{"date":"周一 06月23日 (实时:25℃)","dayPictureUrl":"http://api.map.baidu.com/images/weather/day/zhenyu.png","nightPictureUrl":"http://api.map.baidu.com/images/weather/night/zhenyu.png","weather":"阵雨","wind":"微风","temperature":"26 ~ 22℃"},{"date":"周二","dayPictureUrl":"http://api.map.baidu.com/images/weather/day/zhenyu.png","nightPictureUrl":"http://api.map.baidu.com/images/weather/night/zhenyu.png","weather":"阵雨","wind":"微风","temperature":"25 ~ 22℃"},{"date":"周三","dayPictureUrl":"http://api.map.baidu.com/images/weather/day/zhenyu.png","nightPictureUrl":"http://api.map.baidu.com/images/weather/night/leizhenyu.png","weather":"阵雨转雷阵雨","wind":"微风","temperature":"27 ~ 23℃"},{"date":"周四","dayPictureUrl":"http://api.map.baidu.com/images/weather/day/leizhenyu.png","nightPictureUrl":"http://api.map.baidu.com/images/weather/night/zhenyu.png","weather":"雷阵雨转阵雨","wind":"微风","temperature":"29 ~ 23℃"}]}]}
将结果转换为微信多图文

/**	 * 获取天气	 * 	 * @param map	 * @return	 */	public String getWeather(Map map) {		String message=null;		String openid = map.get("FromUserName") + "";		String toUserName = map.get("ToUserName") + "";		String city = map.get("city") + "";		JSONObject obj = BaiduUtil.getWeatherInfo(city);		String status = obj.getString("status");		if("success".equals(status)){//查找到了			JSONArray jarray=obj.getJSONArray("results");			int size=jarray.size();			if(size>0){				JSONObject j2=jarray.getJSONObject(0);				JSONArray jarray2=j2.getJSONArray("weather_data");				List
articleList = new ArrayList
(); // 创建图文消息 NewsMessage newsMessage = new NewsMessage(); newsMessage.setToUserName(openid); newsMessage.setFromUserName(toUserName); newsMessage.setCreateTime(new Date().getTime()); newsMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_NEWS); newsMessage.setFuncFlag(0); int size2=jarray2.size(); for (int i = 0; i < jarray2.size(); i++) { JSONObject j3=jarray2.getJSONObject(i); String date=j3.getString("date"); String weather=j3.getString("weather"); String wind=j3.getString("wind"); String temperature=j3.getString("temperature"); String title=""; String img_url=j3.getString("dayPictureUrl"); if(i==0){ title=date+" "+weather+" "+wind; }else{ title=date+" "+weather+" "+temperature+" "+wind; } Article article = new Article(); article.setTitle(title); article.setDescription(""); article.setPicUrl(img_url); article.setUrl("http://blog.csdn.net/xuyw10000"); articleList.add(article); } newsMessage.setArticleCount(size2); newsMessage.setArticles(articleList); message = MessageUtil.newsMessageToXml(newsMessage); }else{ map.put("xuywMsg", "啊噢,找不到“"+city+"”的天气。"); message=sendTextMessage(map); } }else{//无结果 map.put("xuywMsg", "啊噢,这个地方百度都找不到。"); message=sendTextMessage(map); } return message; }
结果

<![CDATA[周一 06月23日 (实时:25℃) 阵雨 微风]]>
<![CDATA[周二 阵雨 25 ~ 22℃ 微风]]>
<![CDATA[周三 阵雨转雷阵雨 27 ~ 23℃ 微风]]>
<![CDATA[周四 雷阵雨转阵雨 29 ~ 23℃ 微风]]>
HttpUtil 见 

部署sae后执行

你可能感兴趣的文章
内存或磁盘空间不足,Microsoft Office Excel 无法再次打开或保存任何文档。 [问题点数:20分,结帖人wenyang2004]...
查看>>
委托到Lambda的进化: ()=> {} 这个lambda表达式就是一个无参数的委托及具体方法的组合体。...
查看>>
apache 伪静态 .htaccess
查看>>
unity3d 截屏
查看>>
ASP.NET MVC学习之控制器篇
查看>>
MongoDB ServerStatus返回信息
查看>>
分析jQuery源码时记录的一点感悟
查看>>
程序局部性原理感悟
查看>>
UIView 动画进阶
查看>>
ROS机器人程序设计(原书第2版)1.4.7 在BeagleBone Black中安装rosinstall
查看>>
Spring如何处理线程并发
查看>>
linux常用命令(用户篇)
查看>>
获取组件的方式(方法)
查看>>
win2008 server_R2 自动关机 解决
查看>>
我的友情链接
查看>>
在C#调用C++的DLL简析(二)—— 生成托管dll
查看>>
Linux macos 常用终端操作
查看>>
企业网络的管理思路
查看>>
Linux磁盘分区与挂载
查看>>
J2se学习笔记一
查看>>