zoukankan      html  css  js  c++  java
  • Android解析聚合数据之天气预报

    免费天气预报API:https://www.juhe.cn/docs/api/id/73 ,申请APPKEY

     

    MainActivity.java 

    <span style="font-size:14px;">package com.example.networktest;    
         
    import java.io.BufferedReader;    
    import java.io.IOException;    
    import java.io.InputStream;    
    import java.io.InputStreamReader;    
    import java.net.HttpURLConnection;    
    import java.net.MalformedURLException;    
    import java.net.URL;    
    import java.net.URLEncoder;    
         
    import org.json.JSONArray;    
    import org.json.JSONException;    
    import org.json.JSONObject;    
         
    import android.app.Activity;    
    import android.os.Bundle;    
    import android.os.Handler;    
    import android.os.Message;    
    import android.util.Log;    
    import android.view.View;    
    import android.view.View.OnClickListener;    
    import android.widget.Button;    
    import android.widget.TextView;    
         
    public class MainActivity extends Activity {    
        private Button sendRequest;    
        private TextView responseText;    
        public static final int SHOW_RESPONSE = 0;    
        private Handler handler = new Handler() {    
         
            public void handleMessage(Message msg) {    
                switch (msg.what) {    
                case SHOW_RESPONSE:    
                    String response = (String) msg.obj;    
                    // 在这里进行UI操作,将结果显示到界面上    
                    responseText.setText(response);    
                }    
            }    
         
        };    
         
        @Override   
        protected void onCreate(Bundle savedInstanceState) {    
            super.onCreate(savedInstanceState);    
            setContentView(R.layout.activity_main);    
            sendRequest = (Button) findViewById(R.id.send_request);    
            responseText = (TextView) findViewById(R.id.response);    
            sendRequest.setOnClickListener(new OnClickListener() {    
                @Override   
                public void onClick(View arg0) {    
                    sendRequestWithHttpURLConnection();    
                }    
            });    
        }    
         
        protected void sendRequestWithHttpURLConnection() {    
            new Thread() {    
                @Override   
                public void run() {    
                    URL url;    
                    HttpURLConnection connection = null;    
                    try {    
                        // url = new    
                        // URL("http://10.2.5.119:8080/Server/getData.json");    
                        String cityName = URLEncoder.encode("滨州", "utf-8");    
                        url = new URL(    
                                "http://v.juhe.cn/weather/index?format=2&cityname="   
                                        + cityName    
                                        + "&key=ab9d7e2007472d723baf71fcdc4ba094");    
                        connection = (HttpURLConnection) url.openConnection();    
                        connection.setRequestMethod("GET");    
                        connection.setConnectTimeout(8000);    
                        connection.setReadTimeout(8000);    
                        InputStream in = connection.getInputStream();    
                        // 下面对获取到的输入流进行读取    
                        BufferedReader reader = new BufferedReader(    
                                new InputStreamReader(in));    
                        StringBuilder response = new StringBuilder();    
                        String line;    
                        while ((line = reader.readLine()) != null) {    
                            response.append(line);    
                        }    
                        System.out.println("response=" + response.toString());    
                        //parseWithJSON(response.toString());    
                        parseWeatherWithJSON(response.toString());    
                        Message message = new Message();    
                        message.what = SHOW_RESPONSE;    
                        // 将服务器返回的结果存放到Message中    
                        message.obj = response.toString();    
                        handler.sendMessage(message);    
                    } catch (MalformedURLException e) {    
                        e.printStackTrace();    
                    } catch (IOException e) {    
                        e.printStackTrace();    
                    } finally {    
                        if (connection != null) {    
                            connection.disconnect();    
                        }    
                    }    
                }    
            }.start();    
         
        }    
         
        protected void parseWeatherWithJSON(String response) {    
            try {    
                JSONObject jsonObject=new JSONObject(response);    
                String resultcode=jsonObject.getString("resultcode");    
                if(resultcode.equals("200")){    
                    JSONObject resultObject=jsonObject.getJSONObject("result");    
                    JSONObject todayObject=resultObject.getJSONObject("today");    
                    String date_y=todayObject.getString("date_y");    
                    String week=todayObject.getString("week");    
                    String temperature=todayObject.getString("temperature");    
                    Log.d("MainActivity", "date_y="+date_y+"week="+week+"temp="+temperature);    
                }    
                     
            } catch (JSONException e) {    
                e.printStackTrace();    
            }    
        }    
         
        protected void parseWithJSON(String response) {    
            try {    
                JSONArray jsonArray = new JSONArray(response);    
                for (int i = 0; i < jsonArray.length(); i++) {    
                    JSONObject jsonObject = jsonArray.getJSONObject(i);    
                    String id = jsonObject.getString("id");    
                    String name = jsonObject.getString("name");    
                    String version = jsonObject.getString("version");    
                    Log.d("MainActivity", "id=" + id + "name=" + name + "version="   
                            + version);    
                }    
            } catch (JSONException e) {    
                e.printStackTrace();    
            }    
        }    
         
    }</span>  
    

    activity_main.xml 

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   
        android:layout_width="match_parent"   
        android:layout_height="match_parent"   
        android:orientation="vertical" >    
        <Button   
            android:id="@+id/send_request"   
            android:layout_width="match_parent"   
            android:layout_height="wrap_content"   
            android:text="Send Request" />    
        <ScrollView   
            android:layout_width="match_parent"   
            android:layout_height="match_parent" >    
            <TextView   
                android:id="@+id/response"   
                android:layout_width="match_parent"   
                android:layout_height="wrap_content" />    
        </ScrollView>    
    </LinearLayout> 
    

      

  • 相关阅读:
    点击标签实现元素的显示与隐藏
    二叉排序树查找 递归 非递归
    新闻实时分析系统 SQL快速离线数据分析
    新闻实时分析系统 Spark2.X集群运行模式
    新闻实时分析系统 Spark2.X分布式弹性数据集
    linux top命令查看内存及多核CPU的使用讲述
    新闻实时分析系统 基于IDEA环境下的Spark2.X程序开发
    新闻实时分析系统 Spark2.X环境准备、编译部署及运行
    新闻实时分析系统Hive与HBase集成进行数据分析 Cloudera HUE大数据可视化分析
    新闻实时分析系统Hive与HBase集成进行数据分析
  • 原文地址:https://www.cnblogs.com/annie00/p/6096593.html
Copyright © 2011-2022 走看看