OkHttp 在 Android 中怎么发送异步请求

2025-03-11 07:08:15
推荐回答(4个)
回答1:

下面是获取到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);

}
}
});

回答2:

放到回调函数里面

new Handler(getMainLooper()).post(new Runnable() {
public void run() {
// 需要在主线程的操作。
}
});

回答3:

1首先构造一个Request对象,参数最起码有个url,当然你可以通过Request.Builder设置更多的参数比如:header、method等。
2然后通过request的对象去构造得到一个Call对象,类似于将你的请求封装成了任务,既然是任务,就会有execute()和cancel()等方法。
3最后,我们希望以异步的方式去执行请求,所以我们调用的是call.enqueue,将call加入调度队列,然后等待任务执行完成,我们在Callback中即可得到结果。

回答4:

放到回调函数里面 :
new Handler(getMainLooper()).post(new Runnable() {
public void run() {
// 需要在主线程的操作。
}
});