判断网络状态 请求网络数据

       在MainActivity中 开启子线程
        new Thread(){
            @Override
            public void run() {
                super.run();
                //在这里写耗时操作(请求网络数据)
                //判断网络状态
                boolean networkConnected = Http.isNetworkConnected(MainActivity.this);
                //判断有没有网
                if (networkConnected){
                    //有网就请求数据
                    String get = Http.requestHttpGet("http://api.expoon.com/AppNews/getNewsList/type/1/p/1");
                    Gson gson=new Gson();
                    JsonBean bean = gson.fromJson(get, JsonBean.class);
                    //把数据传递给主线程
                    Message message=new Message();
                    message.what=0;
                    message.obj=bean;
                    handler.sendMessage(message);
                }else{
                   handler.sendEmptyMessageDelayed(1,0);
                }

            }
        }.start();
        //主线程
Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
    switch (msg.what){
        case 0:
            JsonBean bean= (JsonBean) msg.obj;
            Toast.makeText(MainActivity.this,""+bean.toString(),Toast.LENGTH_LONG).show();

            break;
        case 1:
            //没网就提示用户 没网
            Toast.makeText(MainActivity.this,"没网啊?",Toast.LENGTH_LONG).show();
            break;
    }
    }
};

}
////////////////////////在Http中判断有没有网
public static boolean isNetworkConnected(Context context) {
//注意要写网络权限
//判断参数是否为空(必须)
if (context != null) {
//getSystemService 获取系统服务
//获取连接管理器
ConnectivityManager mConnectivityManager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
//获取网络状态
NetworkInfo info = mConnectivityManager.getActiveNetworkInfo();
if (info != null) {
//判断网络是否可用
return info.isAvailable();
}
}
return false;
}

/**
 * 请求数据GET请求
 */
public static String requestHttpGet(String strUrl) {

    try { //设置url
        URL url = new URL(strUrl);

        //获取HttpURLConnection
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        //设置为get请求
        connection.setRequestMethod("GET");
        //设置连接主机超时时间
        connection.setConnectTimeout(5000);
        //设置从主机读取数据超时
        connection.setReadTimeout(5000);
        //获取请求码(来判断网络请求是否正确)
        int code = connection.getResponseCode();
        //判断请求是否成功
        if (code == HttpURLConnection.HTTP_OK) {
            //如果数据请求成功
            //就获取数据
            InputStream stream = connection.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "utf-8"));
            //拼接字符串
            StringBuilder builder = new StringBuilder();
            //把数据读取从成字符串
            String str = "";
            while ((str = reader.readLine()) != null) {
                //把一行行数据拼接成一行数据
                builder.append(str);
            }
            //返回拼接后的数据
            return builder.toString();

        }
        //关闭连接
        connection.disconnect();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

猜你喜欢

转载自blog.csdn.net/weixin_44258714/article/details/85330667
今日推荐