使用HttpURLConnection请求Gson网络解析数据

解析 JSON 数据 使用官方提供的 JSONObject,也可以使用谷歌的开源库 GSON.

package com.gaoo.httpclientdemo;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;


public class MainActivity extends AppCompatActivity {

    Button send;
    TextView show;
    Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);

            if (msg.what == 0x123) {
                String result = (String) msg.obj;
                show.setText(result.toString());
            }

        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        send = (Button) findViewById(R.id.send);
        show = (TextView) findViewById(R.id.show);

        send.setOnClickListener(new View.OnClickListener() {
                                    @Override
                                    public void onClick(View v) {
                                        sendRequest();
                                        Toast.makeText(MainActivity.this, "点我了", Toast.LENGTH_SHORT).show();
                                    }
                                }
        );
    }

    private void sendRequest() {
        // 开启线程来发起网络请求
        new Thread(new Runnable() {
            @Override
            public void run() {
                HttpURLConnection connection = null;
                try {
                    URL url = new URL("http://10.0.3.2/dataJson.json");
                    connection = (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.setConnectTimeout(8000);
                    connection.setReadTimeout(8000);
                    InputStream in = connection.getInputStream();
                    // 下面对获取到的输入流进行读取
                    BufferedReader reader = new BufferedReader(new
                            InputStreamReader(in));
                    String response = new String();
                    String line;
                    while ((line = reader.readLine()) != null) {
                        response += line;
                    }
                    Log.d("----response---  ", response);
                    parseJSONWithJSONObject(response);

                    Message message = new Message();
                    message.what = 0x123;
                    // 将服务器返回的结果存放到Message中
                    message.obj = response.toString();
                    mHandler.sendMessage(message);

                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    if (connection != null) {
                        connection.disconnect();
                    }
                }
            }
        }).start();
    }

    private void parseJSONWithJSONObject(String jsonData) {

        //使用 Gson 解析json数据
        Gson gson = new Gson();

        List<App> appList = gson.fromJson(jsonData, new TypeToken<List<App>>() {}.getType());


        for (int i = 0; i < appList.size(); i++) {

            App app = appList.get(i);
            Log.e("MainActivity", app.toString());
           // Log.d("MainActivity", "id is " + app.getId() + " name is " + app.getName() + " version is " + app.getVersion());
        }

        //----------------------------------

        // JSONObject 解析json数据
//        try {
//            JSONArray jsonArray = new JSONArray(jsonData);
//            for (int i = 0; i < jsonArray.length(); i++) {
//                JSONObject jsonObject = jsonArray.getJSONObject(i);
//
//                String id = jsonObject.getString("id");
//                String version = jsonObject.getString("version");
//                String name = jsonObject.getString("name");
//
//                Log.d("MainActivity", "id is " + id+" name is " + name+" version is " + version);
//            }
//
//        } catch (JSONException e) {
//            e.printStackTrace();
//        }

        //---------------------------------


    }
}

使用的javaBean

package com.gaoo.httpclientdemo;

/**
 * Created by Administrator on 2016/7/7.
 */
public class App {
    public String id;
    public String name;
    public String version;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    @Override
    public String toString() {
        return "App{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", version='" + version + '\'' +
                '}';
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值