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

所属分类: 软件编程 / Android 阅读数: 808
收藏 0 赞 0 分享

本文实例讲述了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 byte[] 和short[]转换的方法代码

这篇文章主要介绍了android byte[] 和short[]转换的方法代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android获取应用程序大小的方法

这篇文章主要介绍了Android获取应用程序大小的方法,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android获取其他包的Context实例代码

这篇文章主要介绍了Android获取其他包的Context实例代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android放大镜的实现代码

这篇文章主要介绍了Android放大镜的实现代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android 读取Properties配置文件的小例子

这篇文章主要介绍了Android 读取Properties配置文件的小例子,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android通讯录开发之删除功能的实现方法

这篇文章主要介绍了Android通讯录开发之删除功能的实现方法,有需要的朋友可以参考一下
收藏 0 赞 0 分享

使用ViewPager实现android软件使用向导功能实现步骤

现在的大部分android软件,都是使用说明,就是第一次使用该软件时,会出现向导,可以左右滑动,然后就进入应用的主界面了,下面我们就实现这个功能
收藏 0 赞 0 分享

android在异步任务中关闭Cursor的代码方法

android在异步任务中如何关闭Cursor?在我们开发应用的时候,很多时候会遇到这种问题,下面我们就看看代码如何实现
收藏 0 赞 0 分享

Android自定义桌面功能代码实现

android自定义桌面其实很简单,看一个例子就明白了
收藏 0 赞 0 分享

android将图片转换存到数据库再从数据库读取转换成图片实现代码

有时候我们想把图片存入到数据库中,尽管这不是一种明智的选择,但有时候还是不得以会用到,下面说说将图片转换成byte[]数组存入到数据库中去,并从数据库中取出来转换成图像显示出来
收藏 0 赞 0 分享
查看更多