`
263229365
  • 浏览: 472024 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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编程实现获取新浪天气预报数据的方法。分享给大家供大家参考,具体如下: 新浪天气预报地址: http://php.weather.sina.com.cn/xml.php?city=武汉&password=DJOYnieT8234jlsK&day=0 其中,city...

    从新浪服务器获得天气情况的天气预报

    在本文中,我们将深入探讨如何从新浪服务器获取天气预报数据,并构建一个简单的天气预报应用。首先,我们需要理解天气预报服务的基本工作原理以及如何通过网络接口与之交互。 天气预报服务通常由各大气象机构提供,...

    新浪天气预报

    【新浪天气预报】是一款专为安卓4.0.3及以上版本设计的应用程序,它提供了详细的天气信息,旨在帮助用户及时了解各地的气象状况。作为一款Demo,它为开发者提供了学习和参考的样本,展示了如何集成新浪天气API并构建...

    android天气预报例子

    在Android开发中,创建一个天气预报应用是一项常见的任务,它涉及到网络请求、数据解析、UI设计等多个技术领域。本例子将重点关注如何利用第三方API获取天气信息,并在Android应用中展示。我们将讨论以下关键知识点...

    安卓天气预报

    要调用新浪的天气预报接口,需要构造一个URL,包含指定的城市名或ID,并发送GET请求来获取JSON格式的天气数据。 其次,数据解析是另一个核心步骤。收到的JSON数据需要被解析成Java对象,以便于应用处理和展示。安卓...

    Android例子源码简单天气获取项目新浪接口

    本项目是一个简单的天气获取的小例子源码,使用...会自动定位到当前城市然后获取前后三天范围的天气数据,代码有注释。之前也介绍过很多关于天气项目的源码,感兴趣的朋友可以在网站首页右侧分类里面找下

    Android平台下的气象查询软件

    【Android平台下的气象查询软件】是一款专为Android用户设计的天气预报应用程序,它利用Web Service技术,特别是通过集成“新浪天气API”,实现了多种实用功能,包括城市天气查询、GPS定位、天气信息分享以及天气...

    新浪天气透明版

    【新浪天气透明版】是一款专为三星9300手机设计的天气应用,它提供了清晰、简洁且富有透明感的界面,让用户在获取天气信息的同时享受美观的视觉体验。这款应用在三星9300设备上经过亲测,确保了其兼容性和稳定性,让...

    volley+百度地图=天气

    在Android应用开发中,"Volley+百度地图=天气"这个项目结合了两个重要的技术:Volley库用于网络请求,而百度地图API则用于获取用户的地理位置信息,从而提供天气预报服务。下面将详细讲解这两个技术及其在项目中的...

    三星s4天气模块

    SinaWeather(新浪天气)是中国知名的天气预报服务提供商,该模块可能包含了天气数据的获取、解析和显示逻辑。它负责处理用户界面的展示,将实时天气信息以美观、直观的方式呈现给用户。同时,它还可能具备设置功能...

    SinaWeatherWidget

    SinaWeatherWidget是一款专为defy525+智能手机设计的天气应用程序组件,它整合了新浪的天气信息源,为用户提供实时、准确的天气预报。这款应用不仅提供了基本的天气数据,如温度、湿度、风向风速,还可能包括空气...

Global site tag (gtag.js) - Google Analytics