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程序设计有所帮助。

(0)

相关推荐

  • PHP Ajax JavaScript Json获取天气信息实现代码

    要在自己的网站上添加一个天气预报功能,是一个很普通的需求,实现起来也不是很难.今天来介绍几个简单的方法. 使用第三方服务 有这样的一种简单的方式,借助http://www.tianqi.com/plugin/网上的天气服务,可以定制我们的显示形状,实现添加天气预报的功能. 下面给出一个简单的小例子: 复制代码 代码如下: <iframe width="420" scrolling="no" height="60" frameborder=&

  • 简单易懂的天气插件(代码分享)

    效果图如下: 代码如下所示: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>天气</title> <meta name="viewport" content="width=device-width,initial-scale=1"/> <style type="text/cs

  • PHP微信开发之查询城市天气

    PHP微信查询城市天气,首先,你需要找到一个获取天气的API,此处,我用的是百度的apistore,申请和使用API的网址:http://apistore.baidu.com/apiworks/servicedetail/112.html 登录百度账号,并用手机发送请求获取apikey.有了apikey,可以按照它的示例来请求城市天气了.(可以按照城市中文名,拼音,城市编号等来查询) 你可以现在本地做测试,请求完成之后,再放到自己的域名空间的脚本里.  测试的脚本例如:(注意apikey填写自己

  • Jquery获取当前城市的天气信息

    本文实例为大家分享了Jquery获取当前城市的天气信息代码,供大家参考,具体内容如下 HTML代码: <div id="weather"></div> Jquery代码: function findWeather() { var cityUrl = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js'; $.getScript(cityUrl, function(script, textSt

  • JS显示日历和天气的方法

    本文实例讲述了JS显示日历和天气的方法.分享给大家供大家参考,具体如下: 运行效果截图如下: 完整代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml&qu

  • js获取新浪天气接口的实现代码

    js获取新浪天气接口的实现代码 <!doctype html> <html class="no-js fixed-layout"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>天气</title> </

  • ASP.NET使用WebService实现天气预报功能

    本文使用Asp.Net (C#)调用互联网上公开的WebServices(http://www.webxml.com.cn/WebServices/WeatherWebService.asmx)来实现天气预报,该天气预报 Web 服务,数据来源于中国气象局http://www.cma.gov.cn/,数据每2.5小时左右自动更新一次,准确可靠.包括 340 多个中国主要城市和 60 多个国外主要城市三日内的天气预报数据. 效果图 : 步骤 : 1 .新建web 项目,添加窗体. 2 . 引用右键

  • 编写简易Android天气应用的代码示例

    本文所要介绍的简易天气App主要用RxAndroid.MVP.Retrofit实现,首先来看看效果: 主页内容: 右侧栏天气列表: 左侧栏城市列表 首先看看Activity主要代码(使用MVP模式): //调用Presenter的方法获取数据 mMainPresenter = new MainPresenterImpl(this); mMainPresenter.getPlaceData(); mMainPresenter.getWeatherData("成都"); //显示主页和右侧

  • asp.net实现根据城市获取天气预报的方法

    本文实例讲述了asp.net实现根据城市获取天气预报的方法.分享给大家供大家参考,具体如下: public void GetWetheaerByCity(string cityName) { string city = cityName; string mycity = HttpUtility.UrlEncode(city, System.Text.Encoding.GetEncoding("GB2312")); System.Net.HttpWebRequest request =

  • Android天气预报app改进版

    最近总是有人来和我说我以前写的一个小app无法正常获取数据~Android简易版天气预报app 今天就又运行了下来查找问题,发现或许是接口有限制吧,不能在多台手机使用同个apikey 然后,发现了我写的代码实在乱七八糟,界面也实在不好看,就又重写了一遍,小小地修改了一遍,开发环境改为了Android Studio 最终效果图如下 工程图如下 一.获取地区信息 做这么一个天气预报app,首先就要获取到国内地区列表 (在我的另一篇博客有介绍:向任意网址发起数据请求) 中国天气网开放有天气预报接口,访

  • 用Java实现全国天气预报的api接口调用示例

    step1:选择本文所示例的接口"全国天气预报接口" 聚合数据url:http://www.juhe.cn/docs/api/id/39/aid/87 step2:每个接口都需要传入一个参数key,相当于用户的令牌,所以第一步你需要申请一个key. step3:学过java的同学们都知道,当我们对一个类或者方法不明白其意图和思想时,我们可以去查看文档,这里也不例外,而且对于英文不是特别好的同学来说很幸运的是,聚合网站上的文档都是中文版本的,比起阅读java源码里的英文文档应该轻松很多.

随机推荐