android原声的网络api使用起来略有不便,square公司的okhttp使用起来更加方便。
ExecutorService executor = Executors.newSingleThreadExecutor(); executor.submit(new Runnable() { @Override public void run() { Request.Builder builder = new Request.Builder(); builder.url(Url.newsUrl); Request request = builder.build(); Log.d(TAG,"run: "+request); Call call = okHttpClient.newCall(request); try { Response response = call.execute(); if (response.isSuccessful()) { final String data = response.body().string(); Log.d(TAG,"responese: "+data); activity.runOnUiThread(new Runnable() { @Override public void run() { textView.setText(data); } }); } } catch (IOException e) { e.printStackTrace(); } } });
以上是同步get请求方法,以下异步get请求方法:
Request.Builder builder = new Request.Builder(); builder.url(Url.newsUrl); final Request request = builder.build(); Call call = okHttpClient.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { Log.d(TAG, "onFailure() called with: call = [" + call + "], e = [" + e + "]"); } @Override public void onResponse(Call call, Response response) throws IOException { Log.d(TAG, "onResponse() called with: call = [" + call + "], response = [" + response + "]"); response.body(); } });