Android编程实现获取新浪天气预报数据的方法

作者:越冬越酷 时间:2022-08-15 22:14:44 

本文实例讲述了Android编程实现获取新浪天气预报数据的方法。分享给大家供大家参考,具体如下:

新浪天气预报地址:

http://php.weather.sina.com.cn/xml.php?city=武汉&password=DJOYnieT8234jlsK&day=0

其中,city后的城市可用java.net.URLEncoder.encode(“武汉”,” gb2312”);也可以直接写”武汉”,但不能用”wuhan”。Password固定

Day为0表示当天天气,1表示第二天的天气,2表示第三天的天气,以此类推,最大为4。

工具类:

1、定义成员


/** 新浪天气网址 */
public final String SINA_URL = "http://php.weather.sina.com.cn/xml.php";
/** 新浪天气XML调用密码 */
public final String PASSWORD = "DJOYnieT8234jlsK";
/** 城市 */
public String city;
/** 白天天气 */
public String status1;
/** 夜晚天气 */
public String status2;
/** 白天天气 拼音 */
public String figure1;
/** 夜晚天气拼音 */
public String figure2;
/** 白天风向 */
public String direction1;
/** 夜晚风向 */
public String direction2;
/** 白天风级 */
public String power1;
/** 夜晚风级 */
public String power2;
/** 白天温度 */
public String temperature1;
/** 夜晚温度 */
public String temperature2;
/** 体感温度 */
public String tgd;
/** 紫外线指数 */
public String zwx_l;
/** 紫外线说明 */
public String zwx_s;
/** 体感度指数 */
public String ssd_l;
/** 体感度说明 */
public String ssd_s;
/** 空调指数 */
public String ktk_l;
/** 空调说明 */
public String ktk_s;
/** 洗车指数 */
public String xcz_l;
/** 洗车说明 */
public String xcz_s;
/** 穿衣指数 */
public String chy_l;
/** 穿衣说明 */
public String chy_shuoming;
/** 污染物扩散条件 */
public String pollution_l;
/** 污染物扩散条件说明 */
public String pollution_s;
/** 感冒指数 */
public String gm_l;
/** 感冒说明 */
public String gm_s;
/** 运动指数 */
public String yd_l;
/** 运动说明 */
public String yd_s;

2、获取天气数据


/**
* 更新天气
*
* @param city
*   城市名
* @param day
*   0表示当天天气,1表示第二天的天气,2表示第三天的天气,以此类推,最大为4
*/
public void UpdateWeatherInfo(String city, String day) {
 if (city.equals("")) {
  isLoaded = false;
  return;
 }
 String html = null;
 try {
  html = doGet(SINA_URL + "?city="
    + java.net.URLEncoder.encode(city, "gb2312") + "&password="
    + PASSWORD + "&day=" + day);
  Document doc = Jsoup.parse(html);
  if (doc.body().getElementsByTag("Profiles").size() == 0) {
   isLoaded = false;
   return;
  }
  if (doc.body().getElementsByTag("Profiles").get(0).getElementsByTag("Weather").size() == 0) {
   isLoaded = false;
   return;
  }
  Element element = doc.body().getElementsByTag("Profiles").get(0)
    .getElementsByTag("Weather").get(0);
  this.city = element.getElementsByTag("city").text();
  status1 = element.getElementsByTag("status1").text();
  status2 = element.getElementsByTag("status2").text();
  figure1 = element.getElementsByTag("figure1").text();
  figure2 = element.getElementsByTag("figure2").text();
  direction1 = element.getElementsByTag("direction1").text();
  direction2 = element.getElementsByTag("direction2").text();
  power1 = element.getElementsByTag("power1").text();
  power2 = element.getElementsByTag("power2").text();
  temperature1 = element.getElementsByTag("temperature1").text();
  temperature2 = element.getElementsByTag("temperature2").text();
  tgd = element.getElementsByTag("tgd").text();
  zwx_l = element.getElementsByTag("zwx_l").text();
  zwx_s = element.getElementsByTag("zwx_s").text();
  ssd_l = element.getElementsByTag("ssd_l").text();
  ssd_s = element.getElementsByTag("ssd_s").text();
  ktk_l = element.getElementsByTag("ktk_l").text();
  ktk_s = element.getElementsByTag("ktk_s").text();
  xcz_l = element.getElementsByTag("xcz_l").text();
  xcz_s = element.getElementsByTag("xcz_s").text();
  chy_l = element.getElementsByTag("chy_l").text();
  chy_shuoming = element.getElementsByTag("chy_shuoming").text();
  pollution_l = element.getElementsByTag("pollution_l").text();
  pollution_s = element.getElementsByTag("pollution_s").text();
  gm_l = element.getElementsByTag("gm_l").text();
  gm_s = element.getElementsByTag("gm_s").text();
  yd_l = element.getElementsByTag("yd_l").text();
  yd_s = element.getElementsByTag("yd_s").text();
  isLoaded = true;
 } catch (UnsupportedEncodingException e) {
  isLoaded = false;
 }
}

3、访问网络


public static final String ENCODE = "utf-8";
public static String doGet(String url) {
 try {
  HttpGet httpGet = new HttpGet(url);
  HttpClient hc = new DefaultHttpClient();
  HttpResponse ht = hc.execute(httpGet);
  if (ht.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
   HttpEntity he = ht.getEntity();
   InputStream is = he.getContent();
   BufferedReader br = new BufferedReader(
     new InputStreamReader(is));
   String response = "";
   String readLine = null;
   while ((readLine = br.readLine()) != null) {
    response = response + readLine;
   }
   is.close();
   br.close();
   return response;
  } else {
   return "error";
  }
 } catch (Exception e) {
  return "error";
 }
}

4、关于jsoup可参考:

http://baike.baidu.com/view/4066913.htm

希望本文所述对大家Android程序设计有所帮助。

标签:Android,新浪,天气
0
投稿

猜你喜欢

  • Android Listview多tab上滑悬浮效果

    2021-07-27 22:06:23
  • 在Eclipse安装Spring boot插件的步骤(图文)

    2023-01-14 05:04:05
  • springcloud中Ribbon和RestTemplate实现服务调用与负载均衡

    2022-06-30 14:58:45
  • Android仿微信键盘切换效果

    2022-05-01 08:06:41
  • java利用easyexcel实现导入与导出功能

    2022-09-29 06:40:16
  • 简述Mybatis增删改查实例代码

    2023-03-06 18:07:53
  • 浅谈Mybatis通用Mapper使用方法

    2023-02-15 17:46:52
  • Java——对象初始化顺序使用详解

    2023-11-01 01:08:46
  • Android使用ViewPager实现类似laucher左右拖动效果

    2022-05-18 20:33:59
  • SpringMVC请求流程源码解析

    2021-08-07 03:35:11
  • Kotlin 基础教程之异常

    2022-10-31 06:34:52
  • SpringCloud用Zookeeper搭建配置中心的方法

    2022-12-17 18:16:18
  • IDEA查看Scala的源码的教程图解

    2023-12-13 22:50:45
  • 谈谈你可能并不了解的java枚举

    2023-11-09 21:08:55
  • java多线程编程学习(线程间通信)

    2023-04-02 05:25:34
  • Java后端Tomcat实现WebSocket实例教程

    2023-08-22 17:31:09
  • Android实现未读消息小红点显示实例

    2022-05-18 07:57:27
  • java 动态增加定时任务示例

    2023-07-29 06:56:00
  • Unity3D实现渐变颜色效果

    2022-09-03 08:14:32
  • java实现gif动画效果(java显示动态图片)

    2023-10-19 07:56:38
  • asp之家 软件编程 m.aspxhome.com