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();
}
});