Josn HeepUrlConnection GET请求的方法

本文介绍了一个使用Gson库解析JSON数据的Android应用实例,展示了如何通过网络请求获取JSON数据并将其显示在ListView中。应用包含一个按钮,点击后会检查网络状态,若网络可用则发起HTTP请求,接收返回的JSON数据,利用Gson进行解析,并更新UI显示结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.example.jsonjiexi;

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

import com.google.gson.Gson;

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.List;

public class MainActivity extends AppCompatActivity {

private ListView listView;
private Button button;
private ContentAdapter adapter;
private final  int UPDATE_UI = 1;
private Handler handler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
            switch (msg.what){
                case UPDATE_UI:
                    adapter.setResult((List<List<String>>)msg.obj);
                    break;
            }
    }
};

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

    listView = findViewById(R.id.list_item);
    button = findViewById(R.id.button);

    adapter = new ContentAdapter(this);
    listView.setAdapter(adapter);

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(!NetWork.HasNetUitlWork(MainActivity.this)){
                Toast.makeText(MainActivity.this,"当前网络不可用",Toast.LENGTH_LONG).show();
                return;
            }

            new Thread(
                    new Runnable() {
                        @Override
                        public void run() {
                            SelectPhone();
                        }
                    }
            ).start();
        }
    });
}
private String StrUrl = "https://suggest.taobao.com/sug?code=utf-8&q=%E6%89%8B%E6%9C%BA";

private void SelectPhone(){
    //定义地址
    try {
        URL url = new URL(StrUrl);
        //打开连接
        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
        //设置超时
        //请求方法
        int responseCode = urlConnection.getResponseCode();

        if(responseCode == 200){

            String result = streamTostring(urlConnection.getInputStream());

            //过的Gson
            Bean bean = new Gson().fromJson(result, Bean.class);

            handler.sendMessage(handler.obtainMessage(UPDATE_UI,bean.getResult()));
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

private String streamTostring(InputStream is) throws IOException {

    InputStreamReader isr = new InputStreamReader(is);

    BufferedReader br = new BufferedReader(isr);

    StringBuilder stringBuilder = new StringBuilder();

    for(String mmp = br.readLine();mmp!=null;mmp = br.readLine()){

        stringBuilder.append(mmp);

    }

    return stringBuilder.toString();
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值