一般在UI线程(主线程)中调用网络请求不可取,但有时候也会用到,比如更新UI(应该还有更好的解决办法)
此篇仅以记录 OKHttp 同步请求:
private Handler requestHandler_post = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case 1:Toast.makeText(Mine1Activity.this, "Successful", Toast.LENGTH_SHORT).show();break;
case 0:Toast.makeText(Mine1Activity.this, "Fail", Toast.LENGTH_SHORT).show();break;
default:
super.handleMessage(msg);
}
}};
new Thread(new Runnable() { @Override public void run() {} }).start();Message msg = requestHandler_post.obtainMessage(); try { OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(Url) //Url为要请求的网络连接 .build(); Response response = client.newCall(request).execute(); if (!response.isSuccessful()) { msg.what = 0; } else { JSONObject jsonObject = new JSONObject(response.body().string()); String jsondata = jsonObject.getString("json"); Log.i("retpost",jsondata); //这里获得的返回数据可以在主线程中做进一步使用 msg.what = 1; } } catch (Exception ex) { msg.what = 0; } finally { msg.sendToTarget(); }