整合百度天气API
来源:互联网 发布:javascript 隐藏div 编辑:程序博客网 时间:2024/05/15 10:02
由于自己闲着的时候写了一个微信公众平台的小应用 也参考了很多别人的源码 再此感谢那些被我参考过的大神们
本着开源的精神 http://git.oschina.net/bddiudiu/wechat_Spring 我的项目也开源了 大部分都是参考了 智云同学的项目
项目目前部署与新浪SEA 访问地址 http://diuwx.sinaapp.com
好了 不多说微信的这个项目 我们来讲一下 如何整合百度的API一起进来 顺便也给自己日后留下一些痕迹
首先我们查看百度车联网的API页面 我们找到我们需要的天气接口 同时我们也申请一个ak key 具体申请KEY这里就不说了
得到KEY 以及 api的url和各种参数 我们开始将百度的天气接口整合进我们的项目
百度的这个接口,我们要在项目中模拟一次http提交.
既然这样 那我们就看一下他的url提交地址
http://api.map.baidu.com/telematics/v3/weather?location=北京&output=json&ak=yourkey
看一下地址我们就会看出来,这个url需要拼接3个参数.
location 我们需要查询的城市
output 返回给我们的数据格式
ak 我们的 ak key
当然他还有别的参数 我们这里暂时不用.
好 知道了url之后我们在项目中新建一个工具类 我们就叫他baiduutil.java
然后我们新建3个参数
private
static
String api =
"http://api.map.baidu.com/telematics/v3/weather?"
;
private
static
String output =
"json"
;
private
static
String ak =
"your key"
;
然后 我们写一个方法 就是向百度提交url
public
static
String getSend(String str){
//将传进来的城市转码
try
{
str = URLEncoder.encode(str,
"utf-8"
);
}
catch
(Exception e) {
e.printStackTrace();
}
//拼接url
StringBuffer buf =
new
StringBuffer();
buf.append(
"location="
);
buf.append(str);
buf.append(
"&output="
);
buf.append(output);
buf.append(
"&ak="
);
buf.append(ak);
String param = buf.toString();
//这是接收百度API返回的内容
String result =
""
;
String urlName = api + param;
URL realUrl;
try
{
realUrl =
new
URL(urlName);
// 打开和URL之间的连接
URLConnection conn = realUrl.openConnection();
conn.setDoInput(
true
);
BufferedReader br =
new
BufferedReader(
new
InputStreamReader(conn.getInputStream()));
String line = br.readLine();
while
(line !=
null
) {
result += line;
line = br.readLine();
}
br.close();
return
result;
}
catch
(Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return
null
;
}
以上的代码将会返回来一段json数据.当然如果你的output是xml你得到的就是xml格式的.
下面我们就需要解析这返回来的json数据
{
"error"
:
0
,
"status"
:
"success"
,
"date"
:
"2014-05-09"
,
"results"
:[
{
"currentCity"
:
"\u5317\u4eac"
,
"weather_data"
:[
{
"date"
:
"\u5468\u4e94(\u4eca\u5929, \u5b9e\u65f6\uff1a19\u2103)"
,
"dayPictureUrl"
:
"http:\/\/api.map.baidu.com\/images\/weather\/day\/yin.png"
,
"nightPictureUrl"
:
"http:\/\/api.map.baidu.com\/images\/weather\/night\/yin.png"
,
"weather"
:
"\u9634"
,
"wind"
:
"\u5fae\u98ce"
,
"temperature"
:
"20 ~ 14\u2103"
},
{
"date"
:
"\u5468\u516d"
,
"dayPictureUrl"
:
"http:\/\/api.map.baidu.com\/images\/weather\/day\/zhenyu.png"
,
"nightPictureUrl"
:
"http:\/\/api.map.baidu.com\/images\/weather\/night\/xiaoyu.png"
,
"weather"
:
"\u9635\u96e8\u8f6c\u5c0f\u96e8"
,
"wind"
:
"\u5fae\u98ce"
,
"temperature"
:
"19 ~ 11\u2103"
},
{
"date"
:
"\u5468\u65e5"
,
"dayPictureUrl"
:
"http:\/\/api.map.baidu.com\/images\/weather\/day\/xiaoyu.png"
,
"nightPictureUrl"
:
"http:\/\/api.map.baidu.com\/images\/weather\/night\/qing.png"
,
"weather"
:
"\u5c0f\u96e8\u8f6c\u6674"
,
"wind"
:
"\u5fae\u98ce"
,
"temperature"
:
"19 ~ 10\u2103"
},
{
"date"
:
"\u5468\u4e00"
,
"dayPictureUrl"
:
"http:\/\/api.map.baidu.com\/images\/weather\/day\/qing.png"
,
"nightPictureUrl"
:
"http:\/\/api.map.baidu.com\/images\/weather\/night\/qing.png"
,
"weather"
:
"\u6674"
,
"wind"
:
"\u5fae\u98ce"
,
"temperature"
:
"28 ~ 14\u2103"
}
]
}
]
}
以上就是百度返回给我们的json格式.
我们使用Gson来解析.
首先新建3个类
class
Status{
private
String error;
private
String status;
private
String date;
private
List<Results> results;
}
class
Results{
private
String currentCity;
private
List<Weather> weather_data;
}
class
Weather{
private
String date;
private
String dayPictureUrl;
private
String nightPictureUrl;
private
String weather;
private
String wind;
private
String temperature;
}
并生成get/set方法.
然后 我们使用Gson来解析 传进来的JSON字符串是 json
Gson gson =
new
Gson();
Status status = gson.fromJson(json, Status.
class
);
然后下面就是自己去获取 status里面的内容 然后返回到 微信公众平台
from:http://my.oschina.net/bddiudiu/blog/262636
- 整合百度天气API
- 百度天气API 获取天气
- 百度天气API详解
- 可用百度天气api
- 百度天气api初体验
- 【转】百度api查询天气
- 百度API服务和风天气获取当前天气信息
- php读取百度天气API Json数据
- .NET调用百度天气api经验
- android 百度API定位以及获取天气
- Python调用百度API之天气查询
- java调用百度天气查询API
- PHP调用百度天气接口API
- Android——调用百度天气API实现天气预报
- 百度天气api返回json的解析与运用
- android开发使用百度api获得天气情况
- 使用百度天气API实现自己的天气预报
- 天气Api
- SSH传输scp免密码登陆的方法
- ESB产品架构之事务管理
- 搜索引擎面临的挑战及应对措施
- amcharts解决缓存问题
- 随机数的创建使用
- 整合百度天气API
- Linux网络编程——绑定( bind )端口需要注意的问题
- leetcode Reverse Integer
- web 应用 一亿 并发 解决 之道
- 2015-03-01
- HEVC/H265 文档获得
- mysql数据库备份方式
- 《AngularJS》5个实例详解Directive(指令)机制
- java 正则表达式替换img标签的src路径