Android编程实现获取新浪天气预报数据的方法
作者:越冬越酷 发布时间:2022-08-15 22:14:44
标签:Android,新浪,天气
本文实例讲述了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游戏开发中主要的类除了控制类就是显示类,
- 线程池合理设置最大线程数和核心线程数工作中有这样一个场景,需要处理千万级别的数据的一个算法,大部分是增删查的操作。这个时候就需要使用多线程去
- 目录概述语法索引器(Indexer)的用途重载索引器(Indexer)概述索引器(Indexer) 允许一个对象可以像数组一样使用下标的方式
- 当一个列表项目很多,并且每个项目可以进入到其它Activity或者Fragment时,保存之前列表的位置是一个比较不错的功能,今天研究了一下
- 本文实例为大家分享了java 利用Socket实现SMTP协议发送邮件的具体代码,供大家参考,具体内容如下package mail;impo
- ionic App 解决android端在真机上 tab处于顶部的Bug在app.js 页面中添加以下代码.config(function(
- 一、内存和寻址概述可编程设备包含微处理器和一定数量的临时存储空间。临时存储器被称为随机存取存储器(RAM)。RAM类似于宿舍里成排存物柜的存
- 1. JVM 运行时数据区JVM运行时数据区可以分为元空间,堆,虚拟机栈,本地方法栈,程序计数器五大块。元空间(方法区):存放类模版对象,是
- 使用redis scan方法无法获取connection,导致线程锁死。0、关键字redisspringbootredistemplates
- 本文实例讲述了C#实现中英文混合字符串截取的方法,是C#字符串操作中非常常用的一个方法。分享给大家供大家参考之用。具体方法如下:具体功能代码
- 一、Java把这些不同来源和目标的数据都统一抽象为数据流。Java语言的输入输出功能是十分强大而灵活的。在Java类库中,IO部分的内容是很
- 什么是Run Dashboard当springcloud的服务有多个时,管理多个服务的启动使用run会不好管理,这样我们就可以使用Run D
- 在前后端分离的项目中后端返回的格式一定要友好,不然会对前端的开发人员带来很多的工作量。那么SpringBoot如何做到统一的后端返回格式呢?
- resultType和resultMap只能有一个成立,resultType是直接表示返回类型的,而resultMap则是对外部Result
- 归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序
- 在之前博文中多次使用了点击事件的处理实现,有朋友就问了,发现了很多按钮的点击实现,但有很多博文中使用的实现方式有都不一样,到底是怎么回事。今
- 一、前言我们在日常开发中,避不开的就是参数校验,有人说前端不是会在表单中进行校验的吗?在后端中,我们可以直接不管前端怎么样判断过滤,我们后端
- 1、添加依赖<dependency> <groupId>org.springframewo
- java 方法签名,我想做java 开发的朋友也知道,方法签名的重要性,是方法重载的一个比较好的解释,尤其是在后续优化方面,这里记录下,有看
- 前言上一篇小结了一下关于redis的异常测试,今天再来盘一盘 MQ 相关的。MQ 跟 redis 一样,也是现在系统服务中不可或缺的重要中间