欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-12-02 17:48:46
本文实例讲述了android编程实现获取新浪天气预报数据的方法。分享给大家供大家参考,具体如下: 新浪天气预报地址: http://php.weather.sina.c...

本文实例讲述了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程序设计有所帮助。