HttpURL请求与网络提醒

public class MainActivity extends AppCompatActivity {

    private String url = "http://v.juhe.cn/toutiao/index?type=top&key=2f41498b35e69877fc56dc96776e5d1f";
    private String url1 = "https://www.zhaoapi.cn/product/searchProducts?keywords=%E7%AC%94%E8%AE%B0%E6%9C%AC&page=1";
    private ListView listView;
    private static final String TAG = "&MainActivity----";
    private MyHandler myHandler = new MyHandler();

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

        //初始化界面
        initViews();
        //获取网络数据
        initDatas();

    }

    private void initDatas() {
        new Thread() {
            @Override
            public void run() {
                try {
                    //网络请求之前,判断是有有网
                    if (hasNet()) {
                        URL u = new URL(url);
                        HttpURLConnection con = (HttpURLConnection) u.openConnection();
                        con.setConnectTimeout(5000);
                        if (con.getResponseCode() == 200) {
                            InputStream inputStream = con.getInputStream();
                            String json = method(inputStream);
                            Log.d(TAG, "run: ----" + json);
                            //发送
                            Message message = myHandler.obtainMessage();
                            message.what = 0;
                            message.obj = json;
                            myHandler.sendMessage(message);

                        }
                    } else {
                        //
                        Log.d(TAG, "没网");
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                                builder.setTitle("是否有网");
                                builder.setPositiveButton("设置", new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        Toast.makeText(MainActivity.this, "hello", Toast.LENGTH_SHORT).show();
                                    }
                                });
                                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {

                                    }
                                });
                                builder.create().show();
                            }
                        });

                    }

                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }.start();
    }

    private void initViews() {
        listView = findViewById(R.id.main_listview);
    }

    public String method(InputStream inputStream) throws IOException {
        int len = 0;
        byte[] butter = new byte[1024];
        StringBuffer stringBuffer = new StringBuffer();
        while ((len = inputStream.read(butter)) != -1) {
            String s = new String(butter, 0, len);
            stringBuffer.append(s);
        }
        Log.d(TAG, "method: " + stringBuffer.toString());
        return stringBuffer.toString();
    }

    class MyHandler extends Handler {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case 0:
                    //成功
                    String json = (String) msg.obj;
                    Gson gson = new Gson();
                    NewsBean newsBean = gson.fromJson(json, NewsBean.class);
                    List<NewsBean.ResultBean.DataBean> list = newsBean.getResult().getData();
                    MyAdapter myAdapter = new MyAdapter(MainActivity.this, list);
                    listView.setAdapter(myAdapter);
                    break;
            }
        }
    }

    //判断当前网络状态
    public boolean hasNet() {
        //获取网络管理者
        ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
        NetworkInfo info = connectivityManager.getActiveNetworkInfo();//获取可用的网络信息
        if (info == null) {
            return false;
        }
        return true;

    }
}

猜你喜欢

转载自blog.csdn.net/aa15362415/article/details/80302221
今日推荐