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 ; } }
ok同步请求和异步请求
最新推荐文章于 2021-08-06 14:27:39 发布