要使用百度天气预报api,首先要有密钥ak,申请地址http://developer.baidu.com/map/lbs-cloud.htm

然后向http://api.map.baidu.com/telematics/v3/weather?location=郑州&output=xml&ak=A72e372de05e63c8740b2622d0ed8ab1
请求,然后会返还给你一个xml文档格式的天气预报如下:

XML代码 
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <CityWeatherResponse>
  3. <status>success</status>
  4. <date>2014-04-29</date>
  5. <results>
  6. <currentCity>郑州</currentCity>
  7. <weather_data>
  8. <date>周二(今天, 实时:20℃)</date>
  9. <dayPictureUrl>http://api.map.baidu.com/images/weather/day/qing.png<;/dayPictureUrl>
  10. <nightPictureUrl>http://api.map.baidu.com/images/weather/night/qing.png<;/nightPictureUrl>
  11. <weather>晴</weather>
  12. <wind>微风</wind>
  13. <temperature>13℃</temperature>
  14. <date>周三</date>
  15. <dayPictureUrl>http://api.map.baidu.com/images/weather/day/qing.png<;/dayPictureUrl>
  16. <nightPictureUrl>http://api.map.baidu.com/images/weather/night/qing.png<;/nightPictureUrl>
  17. <weather>晴</weather>
  18. <wind>微风</wind>
  19. <temperature>28 ~ 15℃</temperature>
  20. <date>周四</date>
  21. <dayPictureUrl>http://api.map.baidu.com/images/weather/day/duoyun.png<;/dayPictureUrl>
  22. <nightPictureUrl>http://api.map.baidu.com/images/weather/night/yin.png<;/nightPictureUrl>
  23. <weather>多云转阴</weather>
  24. <wind>微风</wind>
  25. <temperature>30 ~ 15℃</temperature>
  26. <date>周五</date>
  27. <dayPictureUrl>http://api.map.baidu.com/images/weather/day/yin.png<;/dayPictureUrl>
  28. <nightPictureUrl>http://api.map.baidu.com/images/weather/night/duoyun.png<;/nightPictureUrl>
  29. <weather>阴转多云</weather>
  30. <wind>微风</wind>
  31. <temperature>25 ~ 15℃</temperature>
  32. </weather_data>
  33. </results>
  34. </CityWeatherResponse>

接下 来只需要对此xml文档解析取出数据即可
具体代码如下:

Java代码 
  1. package com.ashen.testapi;
  2. import java.io.BufferedReader;
  3. import java.io.InputStream;
  4. import java.io.InputStreamReader;
  5. import java.io.UnsupportedEncodingException;
  6. import java.net.HttpURLConnection;
  7. import java.net.URL;
  8. import java.net.URLEncoder;
  9. import java.util.Iterator;
  10. import java.util.List;
  11. import org.dom4j.Document;
  12. import org.dom4j.DocumentException;
  13. import org.dom4j.DocumentHelper;
  14. import org.dom4j.Element;
  15. public class BaiduWeather {
  16. //获取天气信息
  17. public static String GetWeater(String city) {
  18. BaiduWeather wu=new BaiduWeather();
  19. String buffstr=null;
  20. try {
  21. String xml= wu.GetXmlCode(URLEncoder.encode(city, "utf-8"));  //设置输入城市的编码,以满足百度天气api需要
  22. buffstr=wu.readStringXml(xml,city);//调用xml解析函数
  23. } catch (Exception e) {
  24. e.printStackTrace();
  25. }
  26. return  buffstr;
  27. }
  28. public String GetXmlCode(String city) throws UnsupportedEncodingException{
  29. String requestUrl = "http://api.map.baidu.com/telematics/v3/weather?location="+city+"&output=xml&ak=A72e372de05e63c8740b2622d0ed8ab1";
  30. StringBuffer buffer = null;
  31. try {
  32. // 建立连接
  33. URL url = new URL(requestUrl);
  34. HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();
  35. httpUrlConn.setDoInput(true);
  36. httpUrlConn.setRequestMethod("GET");
  37. // 获取输入流
  38. InputStream inputStream = httpUrlConn.getInputStream();
  39. InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
  40. BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
  41. // 读取返回结果
  42. buffer = new StringBuffer();
  43. String str = null;
  44. while ((str = bufferedReader.readLine()) != null) {
  45. buffer.append(str);
  46. }
  47. // 释放资源
  48. bufferedReader.close();
  49. inputStreamReader.close();
  50. inputStream.close();
  51. httpUrlConn.disconnect();
  52. } catch (Exception e) {
  53. e.printStackTrace();
  54. }
  55. return buffer.toString();  //返回获取的xml字符串
  56. }
  57. public String readStringXml(String xml,String ifcity) {
  58. StringBuffer buff=new StringBuffer();  //用来拼接天气信息的
  59. Document doc = null;
  60. List listdate=null;  //用来存放日期
  61. List listday=null;  //用来存放白天图片路径信息
  62. List listweather=null;
  63. List listwind=null;
  64. List listtem=null;
  65. try {
  66. // 读取并解析XML文档
  67. //下面的是通过解析xml字符串的
  68. doc = DocumentHelper.parseText(xml); // 将字符串转为XML
  69. Element rootElt = doc.getRootElement(); // 获取根节点
  70. Iterator iter = rootElt.elementIterator("results"); // 获取根节点下的子节点results
  71. String status=rootElt.elementText("status"); //获取状态,如果等于success,表示有数据
  72. if(!status.equals("success"))
  73. return "暂无数据";  //如果不存在数据,直接返回
  74. String date= rootElt.elementText("date");  //获取根节点下的,当天日期
  75. buff.append(date+"\n");
  76. //遍历results节点
  77. while (iter.hasNext()) {
  78. Element recordEle = (Element) iter.next();
  79. Iterator iters = recordEle.elementIterator("weather_data"); //
  80. //遍历results节点下的weather_data节点
  81. while (iters.hasNext()) {
  82. Element itemEle = (Element) iters.next();
  83. listdate=itemEle.elements("date");
  84. //将date集合放到listdate中
  85. listday=itemEle.elements("dayPictureUrl");
  86. listweather=itemEle.elements("weather");
  87. listwind=itemEle.elements("wind");
  88. listtem=itemEle.elements("temperature");
  89. }
  90. for(int i=0;i<listdate.size();i++){  //由于每一个list.size都相等,这里统一处理
  91. Element eledate=(Element)listdate.get(i); //依次取出date
  92. Element eleday=(Element)listday.get(i);//..
  93. Element eleweather=(Element)listweather.get(i);
  94. Element elewind=(Element)listwind.get(i);
  95. Element eletem=(Element)listtem.get(i);
  96. buff.append(eledate.getText()+"==="+eleweather.getText()+"==="+elewind.getText()+"==="+eletem.getText()+"\n");  //拼接信息
  97. //*****************如果想用到微信公众号上,还请自己继续写代码,我只能帮到这了,数据已经分离开了。
  98. //微信天气处理  省略
  99. }
  100. }
  101. } catch (DocumentException e) {
  102. e.printStackTrace();
  103. } catch (Exception e) {
  104. e.printStackTrace();
  105. }
  106. return buff.toString();
  107. }
  108. public static void main(String[] args){
  109. //测试
  110. System.out.println(GetWeater("郑州").toString());
  111. }
  112. }

测试结果:
2014-04-29
周二(今天, 实时:20℃)===晴===微风===13℃
周三===晴===微风===28 ~ 15℃
周四===多云转阴===微风===30 ~ 15℃
周五===阴转多云===微风===25 ~ 15℃

百度天气预报API的使用(java版本)相关推荐

  1. 百度语音识别api使用(Java版本)

    系列文章目录 文章目录 系列文章目录 一.pom依赖引入 二.百度语音转文字 三.两个字符串相似度比较方法(补充) 一.pom依赖引入 <!--百度语音识别--><dependenc ...

  2. 百度天气预报API接口的一个坑

    由于疫情的关系不能出门,所以在家学习微信小程序的开发,利用百度天气预报API接口来获取天气数据,折腾了一天,总是获取不到天气数据,搞得我一头雾水... 今天我下载了百度的demo程序,利用里面提供的J ...

  3. 顺丰api相关示例 - java版本(带打印)

    本来一个简简单单的调用api实现的东西根本没必要单独写一篇博客. ....但是!这个顺丰坑实在是太多了!!!让我都有点想骂人了都 实在忍不住吐槽几点: 丰桥的客服qq群,问了一天没人搭理我,真是应了那 ...

  4. 百度语音合成与语音识别api使用(Java版本)

    百度语音合成官方文档:https://ai.baidu.com/docs#/TTS-Online-Java-SDK/top 百度语音识别官方文档:https://ai.baidu.com/docs#/ ...

  5. 如何使用百度天气预报API接口

    前些天知道了如何获取数字签名SHA1,那它用来干嘛的呢?今天就来学习一下它的用处. 比如说我们要开发一款基于位置的服务,如地图.天气预报等.我们要用到API Key. 百度API Key申请地址:ht ...

  6. 【Kafka笔记】4.Kafka API详细解析 Java版本(Producer API,Consumer API,拦截器等)

    简介 Kafka的API有Producer API,Consumer API还有自定义Interceptor (自定义拦截器),以及处理的流使用的Streams API和构建连接器的Kafka Con ...

  7. 百度天气预报api android,如何使用百度天气预报API接口

    匿名用户 1级 2016-10-16 回答 这个天气预报接口可以呢:http://www.sojson.com/blog/234.html 天气API JSON返回方式 我测试一下请求北京的天气,链接 ...

  8. html 百度天气,百度天气预报api

    服务商: APIStore (企业) 所属分类: 生活常用.旅游 更新时间: 2016-01-26 apikey: 获取apikey 服务简介: 查询当天天气的基本情况,包括气温,风向,风速等信息:提 ...

  9. Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本

    Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本 1. clipse提供了UML的底层Java包, 1 2. MDTUML2Getting St ...

最新文章

  1. April Fools Contest 2018
  2. Hotel California
  3. c++ 图的连通分量是什么_图与图论基本概念(图论算法入门)
  4. Windows命令远程执行工具Winexe
  5. Eclipse下Tomcat插件的安装
  6. Spark SQL 源代码分析系列
  7. TCP三次握手、tcp和udp对比、四表五链
  8. JAVA基础整理-100.Java 多线编程
  9. python发送邮件 退回_python 发送邮件(收到的邮件要有发送方才能回复)
  10. jq之hide(1000)
  11. dnf强化卷代码_这行代码告诉你!为什么你地下城与勇士(DNF)的装备强化老是失败?...
  12. 请求网页时,怎么给我返回了一段 JavaScript 代码
  13. BZOJ 4719--天天爱跑步(LCA差分)
  14. 使用filterRules过滤ueditor的内容
  15. 微信公众号从入门到入坑
  16. U盘提示磁盘写保护无法强制格式化------使用量产工具解决
  17. MapReduce编程快速入门
  18. 谁将成为中国版底特律?
  19. 纯c++读取与显示BMP图片
  20. 我丈母娘家的小店竟然被Dos攻击了

热门文章

  1. 论文阅读_Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition
  2. 我的世界无限贪婪服务器,我的世界无尽贪婪mod
  3. 微机原理课程设计-模拟十字路口交通信号灯
  4. 高感性时代--全新思维:决胜未来的6大能力
  5. vue cli3 配置sass全局变量设置不生效,sass混合器文件全局引入
  6. Linux_Learning_兄弟连
  7. python cfg文件解析
  8. 微信小程序 | 一文总结全部营销抽奖功能
  9. css 根据手机屏幕适应页面高度
  10. 2022青海省农商银行(农信社)招聘每日一练及答案