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> 

  

 

posted @ 2016-11-24 10:01  annie123  阅读(1593)  评论(0编辑  收藏  举报