网络请求解析json的方式HttpClient

来源:互联网 发布:手机视频格式转换软件 编辑:程序博客网 时间:2024/04/19 14:03

注:首先在AndroidManifest.xml中设置联网,然后导包,写Bean包


public class MainActivity extends Activity {

    String path = "http://web.juhe.cn:8080/constellation/getAll?consName=白羊座&type=year&key=3ac9f31ff66b9746539472887b3799c3";

    Handler handler = new Handler() {

        public void handleMessage(android.os.Message msg) {

            Bean bean = (Bean) msg.obj;

            System.out.println(bean.toString());
            
            tv.setText(bean.toString());
        };

    };

    private TextView tv;

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

        tv = (TextView) findViewById(R.id.tv);

    }

    // 请求数据按钮
    public void send(View v) {

        new Thread() {

            public void run() {
                getData();
            };

        }.start();

    }

    /**
     * 联网的方法
     */
    protected void getData() {

        // /得到HttpClient对象
        HttpClient httpClient = new DefaultHttpClient();
        // 得到连接方式对象,设置请求路径
        HttpGet httpGet = new HttpGet(path);

        try {
            // GET方式请求接口,得到响应内容
            HttpResponse httpResponse = httpClient.execute(httpGet);

            // 得到状态行
            StatusLine statusLine = httpResponse.getStatusLine();
            // 得到状态码
            int statusCode = statusLine.getStatusCode();
            // 如果状态码等于200,代表请求成功
            if (statusCode == 200) {
                // 得到包含着数据的实体
                HttpEntity entity = httpResponse.getEntity();
                // 讲实体转换成String,并设置编码集
                String data = EntityUtils.toString(entity, "UTF-8");
                // System.out.println(data);
                // 解析json
                Gson gson = new Gson();
                Bean bean = gson.fromJson(data, Bean.class);
                Message msg = Message.obtain();
                msg.obj = bean;
                handler.sendMessage(msg);

            } else {

                Toast.makeText(MainActivity.this, " 请求失败 ", 1).show();

            }

        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}

0 0