HttpURLConnection解析

本文介绍了一个基于Android的应用如何通过网络请求获取JSON数据,并展示如何解析这些数据来填充列表视图。具体包括设置HTTP请求、处理响应数据及使用Gson进行JSON解析。

package com.bw.chengfengshuai;

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.util.ArrayList;

import com.bw.Bean.Bean;
import com.bw.Bean.Data;
import com.google.gson.Gson;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.ActionBarActivity;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;

public class MainActivity extends ActionBarActivity {

private String paths="http://www.yulin520.com/a2a/impressApi/news/mergeList?sign=C7548DE604BCB8A17592EFB9006F9265&pageSize=10&gender=2&ts=1871746850&page=1";
private ListView lv;
private ArrayList<Data> list;
private Button bt_dingwei,bt_huancun; 
private MyAdapter adapter; 

Handler handler=new Handler(){
    public void handleMessage(android.os.Message msg) {

        Bean bean=(Bean) msg.obj;
        list=bean.getData();
    adapter=new MyAdapter(MainActivity.this, list);
    lv.setAdapter(adapter);
    };
    }; 

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    lv=(ListView) findViewById(R.id.lv);
    new Thread() {

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

    }.start();


    bt_dingwei=(Button) findViewById(R.id.bt_dingwei);
    bt_dingwei.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            Intent mIntent=new Intent(getApplicationContext(), SendActivity.class);
            startActivity(mIntent);
        }
    });
    bt_huancun=(Button) findViewById(R.id.bt_huancun);

}

private void getdata() {
    // 要访问的服务器地址

            try {
                // 设置要访问地址
                URL url = new URL(paths);
                // 打开连接,得到HttpURLConnection对象
                HttpURLConnection connection = (HttpURLConnection) url
                        .openConnection();
                // 设置联网超时
                connection.setConnectTimeout(5000);
                // 设置请求方式
                connection.setRequestMethod("GET");

                //连接
                connection.connect();
                // 得到响应码
                int responseCode = connection.getResponseCode();
                // 如果响应码是200,代表请求成功
                if (responseCode == 200) {
                    // 得到输入流,包含请求到的数据
                    InputStream inputStream = connection.getInputStream();
                    // 记录每一行读到的数据
                    String s = "";
                    // 追加流里的数据
                    StringBuffer buffer = new StringBuffer();
                    // 读出流里的数据
                    BufferedReader bufferedReader = new BufferedReader(
                            new InputStreamReader(inputStream));
                    // 只要不等于null,流里就一直有数据,就要一直循环读取
                    while ((s = bufferedReader.readLine()) != null) {
                        buffer.append(s);
                    }
                    String data = buffer.toString();
                    System.out.println(data);
                    // 解析数据
                    Gson gson = new Gson();

                    Bean bean = gson.fromJson(data, Bean.class);
                    // 子线程不能更新UI,通过handler发送到主线程
                    Message msg = Message.obtain();
                    msg.obj = bean;
                    handler.sendMessage(msg);

                }

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

}
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值