ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Android开发之天气预报(二)获取网络上的天气数据

2019-04-27 08:47:41  阅读:276  来源: 互联网

标签:String public 获取 connection html msg new Android 天气预报


获取网络上的天气数据

在这里插入图片描述

  1. 有一个天气预报发布网站
    天气预报系统最重要的是获得有效、准确的天气信息,要想获取实时的天气信息,需要访问专门提供天气信息的网站把网站返回的信息解析出想要的信息并显示在手机上。使用中华万年历得到的接口(JSON):
    http://wthrcdn.etouch.cn/weather_mini?city=北京 (城市名称)
    可以直接通过城市名字获得天气数据,json数据,实现起来方便而且数据准确,天气信息和中国天气网(www.weather.com.cn)一致。
    /**
     * 天气API
     * @param cityname
     * @return
     */
    private String getUrl(String cityname){
        return "http://wthrcdn.etouch.cn/weather_mini?city="+cityname;
    }
  1. 借助HttpUrlConnection(java.net.HttpUrlConnection),获取Url网页上的数据;
public class XHttpConnection {

    private IHttpConnection iHttpConnection;

    public XHttpConnection(IHttpConnection iHttpConnection){
        this.iHttpConnection = iHttpConnection;
    }
    /**
     * 向天气查询API发送GET请求
     * @param path
     */
    public void get(final String path){
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    URL url = new URL(path);
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.setConnectTimeout(5 * 1000);
                    connection.setReadTimeout(5 * 1000);
                    connection.connect();
                    //获得服务器的响应码
                    int response = connection.getResponseCode();
                    if(response == HttpURLConnection.HTTP_OK) {
                        InputStream inputStream = connection.getInputStream();
                        String html = dealResponseResult(inputStream);
                        //处理服务器的响应结果
                        Message msg = new Message();
                        msg.what = 1;
                        msg.obj = html;
                        mHandler.sendMessage(msg);
                    }
                    connection.disconnect();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
    
/* 处理函数 
*/

    private Handler mHandler = new Handler(new Handler.Callback() {
        @Override
        public boolean handleMessage(Message msg) {
            switch (msg.what){
                case 1:
                    iHttpConnection.resultGet(msg.obj.toString().trim());
                    break;
            }
            return false;
        }
    }

/*  ... 后续处理

}
  1. 存储处理结果
    private String dealResponseResult(InputStream inputStream) {
        StringBuilder html = new StringBuilder();      //存储处理结果
        try {
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream,"UTF-8");
            BufferedReader reader = new BufferedReader(inputStreamReader);
            String s;
            while ((s = reader.readLine()) != null) {
                html.append(s);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return html.toString();
    }

    private Handler mHandler = new Handler(new Handler.Callback() {
        @Override
        public boolean handleMessage(Message msg) {
            switch (msg.what){
                case 1:
                    iHttpConnection.resultGet(msg.obj.toString().trim());
                    break;
            }
            return false;
        }
    });

   public interface IHttpConnection{
       /**
        * Html回调方法
        * @param html
        */
        void resultGet(String html);
    }

标签:String,public,获取,connection,html,msg,new,Android,天气预报
来源: https://blog.csdn.net/weixin_43124455/article/details/89597373

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有