Android编程实现获取新浪天气预报数据的方法
程序员文章站
2024-02-11 09:58:28
本文实例讲述了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程序设计有所帮助。