本文实例讲述了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程序设计有所帮助。
你好:)我正在写一个电报机器人,显示今天和明天的天气。作为我正在使用的数据openweathermap.org. 现在,我使用了getTodaysWeather方法从JSON中获取有关Java对象的信息http://www.jsonschema2pojo.org并写道: 现在,我需要编写一个方法,从JSON数据中获取明天的天气数据http://api.openweathermap.org/data
本文向大家介绍Android天气预报之基于HttpGet对象解析天气数据的方法,包括了Android天气预报之基于HttpGet对象解析天气数据的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例所述为Android天气预报之解析天气数据的代码,可实现获取HttpGet对象读取天气网站天气数据,并从数据中解析出天气数据,比如温度、温度、风力、风向、未来几天天气趋势、当天天气状况、空气污染指数等
21.1 注册免费API和阅读文档 本节通过一个API接口(和风天气预报)爬取天气信息,该接口为个人开发者提供了一个免费的预报数据(有次数限制)。 首先访问和风天气网,注册一个账户。注册地址:https://console.heweather.com/ 在登陆后的控制台中可以看到个人认证的key(密钥),这个key就是访问API接口的钥匙。 获取key之后阅读API文档:https://www.h
本文向大家介绍android JSON解析数据 android解析天气预报,包括了android JSON解析数据 android解析天气预报的使用技巧和注意事项,需要的朋友参考一下 概要 笔者近期做到对天气预报JSON数据解析,在此小记。 天气预报接口:http://wthrcdn.etouch.cn/weather_mini?citykey=101200101 JSON数据如下: 最终解析效果
利用json解析返回天气信息。 [Code4App.com]
本文向大家介绍微信小程序实现天气预报功能,包括了微信小程序实现天气预报功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了微信小程序实现天气预报功能的具体代码,供大家参考,具体内容如下 这个案例是仿UC中天气界面做的中间也有点出入,预留了显示当前城市名字和刷新图标的位置,自己可以写下,也可以添加搜索城市。值得注意的是100%这个设置好像已经不好使了,可以通过获取设备的高度通过数据绑定