微信百度天气查询

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

/**
 * WxDaoImpl
 *
 * @author xuyw
 * @email [email protected]
 * @date 2014-06-22
 */
  1. 1.接口说明
  2. 2.接口示例
  3. 3.接口参数说明
  4. 4.返回结果
  5. 5.返回xml格式的数据
  6. 6.返回json格式的数据

接口说明

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

接口示例

http://api.map.baidu.com/telematics/v3/weather?location=北京&output=json&ak=yourkey

接口参数说明

参数类型 参数名称 是否必须 具体描述
String ak true 开发者密钥
String sn false 若用户所用ak的校验方式为sn校验时该参数必须。 (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格式的数据

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

返回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<Article> articleList = new ArrayList<Article>();
				// 创建图文消息
				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;
	}

结果

<xml>
  <ToUserName><![CDATA[sadsdaewwaewea]]></ToUserName>
  <FromUserName><![CDATA[bbbbb]]></FromUserName>
  <CreateTime><![CDATA[1403495665819]]></CreateTime>
  <MsgType><![CDATA[news]]></MsgType>
  <FuncFlag><![CDATA[0]]></FuncFlag>
  <ArticleCount><![CDATA[4]]></ArticleCount>
  <Articles>
    <item>
      <Title><![CDATA[周一 06月23日 (实时:25℃) 阵雨 微风]]></Title>
      <Description><![CDATA[]]></Description>
      <PicUrl><![CDATA[http://api.map.baidu.com/images/weather/day/zhenyu.png]]></PicUrl>
      <Url><![CDATA[http://blog.csdn.net/xuyw10000]]></Url>
    </item>
    <item>
      <Title><![CDATA[周二 阵雨 25 ~ 22℃ 微风]]></Title>
      <Description><![CDATA[]]></Description>
      <PicUrl><![CDATA[http://api.map.baidu.com/images/weather/day/zhenyu.png]]></PicUrl>
      <Url><![CDATA[http://blog.csdn.net/xuyw10000]]></Url>
    </item>
    <item>
      <Title><![CDATA[周三 阵雨转雷阵雨 27 ~ 23℃ 微风]]></Title>
      <Description><![CDATA[]]></Description>
      <PicUrl><![CDATA[http://api.map.baidu.com/images/weather/day/zhenyu.png]]></PicUrl>
      <Url><![CDATA[http://blog.csdn.net/xuyw10000]]></Url>
    </item>
    <item>
      <Title><![CDATA[周四 雷阵雨转阵雨 29 ~ 23℃ 微风]]></Title>
      <Description><![CDATA[]]></Description>
      <PicUrl><![CDATA[http://api.map.baidu.com/images/weather/day/leizhenyu.png]]></PicUrl>
      <Url><![CDATA[http://blog.csdn.net/xuyw10000]]></Url>
    </item>
  </Articles>
</xml>

HttpUtil 见 http://blog.csdn.net/xuyw10000/article/details/33342489

部署sae后运行

微信百度天气查询,布布扣,bubuko.com

时间: 2024-10-12 19:19:48

微信百度天气查询的相关文章

微信公众号天气查询接口实例

这是来自百度API的一个天气查询的接口,支持历史7天和未来4天的天气情况查询,接口不错,分享给大家. 接口申请地址:http://apistore.baidu.com/apiworks/servicedetail/112.html 首先,获取一下apikey(貌似需要手机验证码认证下) 我调用的是历史7天和未来4天的接口,接口地址是: http://apis.baidu.com/apistore/weatherservice/recentweathers 我将这个天气查询的功能集成在了微信公众平

微名汇-微信公众平台功能开发(天气查询)

在这篇教程中,我们将介绍如何在微信公众平台上开发天气预报功能.我们将使用中国天气网的气象数据接口来获取天气信息 这篇教程将介绍以下内容: 获取中国天气网的气象数据 在微信公众平台中回复天气 微名汇:http://weixin.zgtuango.com 联系QQ:44653139 一.中国天气网 中国天气网提供了丰富的气象数据接口.下面我们介绍主要的几个: 国家根节点接口: http://flash.weather.com.cn/wmaps/xml/china.xml 该接口以XML格式列出所有的

03微信公众平台 - 实现【天气查询】功能函数,返回一个文本字符串。

一.功能代码函数实现 private function _weather($city) { include("weather_cityId.php"); $c_name=$weather_cityId[$city]; if(!empty($c_name)){ $json=file_get_contents("http://m.weather.com.cn/data/".$c_name.".html"); $data = json_decode($

android 百度天气接口

百度天气接口 之前有篇随笔是说中国气象的天气接口的,但那个接口不是很稳定,用一段时间过后就会获取不到数据了. 随笔地址:http://www.cnblogs.com/liangstudyhome/p/3700420.html 1.最近看到百度有个天气接口,拿来用了用,感觉挺好的,这里就说说这个接口了 百度提供天气预报查询接口API,可以根据经纬度/城市名查询天气情况. 接口说明 根据经纬度/城市名查询天气的结果 接口示例 http://api.map.baidu.com/telematics/v

1、历史天气查询网站-准备工作

一.引言 一直想学习Sql Server.Oracle数据库的优化技巧,以及一些Html的酷炫报表,可是没有数据.如果是自己造数据,觉得太麻烦,同时效果也不好.于是乎小编想到了爬虫,爬取网上的数据. 既然决定采用爬虫获取数据,下面就开始思考选择爬去什么类型的数据.有小说数据.豆瓣电影.天气数据等等,最终小编选择了天气数据.百度了几天了,浏览天气网站,发现历史天气查询网站的数据比较符合小编的感官,下面贴该网站的界面图. 二.目标网站截图 1.天气查询网站首页http://lishi.tianqi.

Python Flask 天气查询

一直觉得自己的博客太简单了,今天想加点功能上去,说干就干,准备加个最常用的,天气预报功能. 看了几个例子,觉得也不是很难,网上找个接口就是了,不过,这百度的apistore里面...死活不让我获取手机验证码,所以转向JUHE里面去,还送500次的免费次数,绝对够用了 进入正题 首先,这个功能的主旨是:通过其他网站提供的api接口取回数据,一般是JSON格式的,然后自己渲染在前端页面上 直接看代码,这个代码是测试用例,最后加到网站以后还需要自行修改,不用class,直接添加函数就好. import

基于nodejs的终端天气查询

国际惯例,先上效果图 前天,突然想到,怎么直接在命令行查询天气呢?好的,那就写一个吧.然后就开始找城市.天气的api接口,最终做出来这么一个东西. 安装方法:$ npm install tianqi -g 源码 : https://github.com/liuhongqiang/tianqi 一. 天气接口 网上搜了一个,最开始准备使用中国天气网的数据接口,但是需要注册,也行,注册就注册吧. 注册好了,又提示信息不完整,好吧,填写姓名.身份证... 最后,还要上传身份证信息,看到这我不想用它了,

C# 解析百度天气数据,Rss解析百度新闻以及根据IP获取所在城市

百度天气 接口地址:http://api.map.baidu.com/telematics/v3/weather?location=上海&output=json&ak=hXWAgbsCC9UTkBO5V5Qg1WZ9,其中ak是密钥,自行去申请即可,便于大家测试,楼主就公布并了自己的Key,这样可以直接获取到数据. 获取到的数据是这样的: {"error":0,"status":"success","date"

全网、全国最好用的基于经纬度的天气查询、天气预报接口

大家好,我们是中国科学院资源与环境信息系统国家重点实验室的人员(学生).在软件开发过程中,我们发现,传统获取天气信息的接口大多是基于所谓的天气码,数据源大多来自中国国家气象局:随着移动互联网的快速发展,大家都希望通过经纬度查询天气信息. 最开始我们搜寻全网,发现谷歌提供了利用经纬度获取天气信息的接口,然而一测试发现,由于“你懂的”原因,它已经无法使用了.国内IT三哥——百度貌似也提供了这么一个接口,但是又是需要神马key啊,验证文件啊等等一堆手续:而且它还限制每天的单个IP的访问次数,更让人讨厌