下面是获取到json字符串。 enqueue就是异步请求的意思。
OkHttpClient mHttpClient = new OkHttpClient();
Request request = new Request.Builder().url(url)
.build();
mHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
//加载失败
}
@Override
public void onResponse(Response response) throws IOException {
//成功获取数据
if (response.isSuccessful()){
String json = response.body().toString();
Log.d("mainai", "onResponse() returned: " + json);
}
}
});
放到回调函数里面
new Handler(getMainLooper()).post(new Runnable() {
public void run() {
// 需要在主线程的操作。
}
});
1首先构造一个Request对象,参数最起码有个url,当然你可以通过Request.Builder设置更多的参数比如:header、method等。
2然后通过request的对象去构造得到一个Call对象,类似于将你的请求封装成了任务,既然是任务,就会有execute()和cancel()等方法。
3最后,我们希望以异步的方式去执行请求,所以我们调用的是call.enqueue,将call加入调度队列,然后等待任务执行完成,我们在Callback中即可得到结果。
放到回调函数里面 :
new Handler(getMainLooper()).post(new Runnable() {
public void run() {
// 需要在主线程的操作。
}
});