ok同步请求和异步请求


public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    /**
     * 异步请求
     */
    private Button btn01;
    /**
     * 同步请求
     */
    private Button btn02;
    /**
     * 本地缓存
     */
    private static final int SUCCESS = 492;
String path=" http://www.xieast.com/api/news/news.php";
    private Button btn03;
    private TextView tv;
    //get两种请求方式共有的东西


    Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what){
                case SUCCESS:
                    String tvv = (String) msg.obj;
                    tv.setText(tvv);
            }
        }
    };


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

    }

    private void initView() {
        btn01 = (Button) findViewById(R.id.btn01);
        btn01.setOnClickListener(this);
        btn02 = (Button) findViewById(R.id.btn02);
        btn02.setOnClickListener(this);
        
        tv = (TextView) findViewById(R.id.tv);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            default:
                break;
            case R.id.btn01:
                getyibu();

                break;
            case R.id.btn02:
                gettongbu();
                break;
             
        }
    }

    //get同步请求方法
    public void gettongbu() {
        new Thread(){
            @Override
            public void run() {
                super.run();
                //请求网络得到相应对象
                OkHttpClient client = new OkHttpClient.Builder().build();
                Request request = new Request.Builder().url(path).build();
                try {
                    Response response = client.newCall(request).execute();
                    //得到数据并转型
                    String s = response.body().string();
                    //更新UI不能在子线程中,使用Handler
                    Message message = handler.obtainMessage();
                    message.obj = s;
                    message.what = SUCCESS;
                    handler.sendMessage(message);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }.start();
        return ;
    }
    //get异步请求
    public void getyibu() {
        OkHttpClient client = new OkHttpClient.Builder().build();
        Request request = new Request.Builder().url(path).build();
        Call   call = client.newCall(request);
        call.enqueue(new Callback() {
            //请求失败的方法
            @Override
            public void onFailure(Call call, IOException e) {

            }
            //请求成功的方法
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                //得到数据并转型
                String s = response.body().string();
                //更新UI不能在子线程中,使用Handler
                Message message = handler.obtainMessage();
                message.obj = s;
                message.what = SUCCESS;
                handler.sendMessage(message);
            }
        });
        return ;
    }

}
 
 



猜你喜欢

转载自blog.csdn.net/pizifusheng/article/details/80414408
今日推荐