我对 OkHttp 库不太熟悉,我对如何将它用于异步请求有一些疑问。
对于 Android 编程,我将 android 库用于http,并使用asyncTask进行一些请求。
但是因为我想尝试 OkHttp 库,所以我遇到了一些关于应该使用它的正确方法的“问题”。
例子:
假设您想使用 OkHttp 实现异步请求。我读到 OkHttp 有它自己的异步 api(https://github.com/square/okhttp/blob/master/samples/guide/src/main/java/okhttp3/recipes/AsynchronousGet.java)。
但后来我遇到了这篇文章( Square 的OkHttp。下载进度),其中那个人使用了“旧”的 asyncTask,但使用了 OkHttp 请求(我还在其他论坛上发现人们正在使用带有 OkHttp 的 AsyncTask)。
这有点令人困惑,因为它可以简单地用这段代码来制作,它也可以适用于 POST:
OkHttpClient client = new OkHttpClient();
// GET request
Request request = new Request.Builder()
.url("http://google.com")
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
Log.e(LOG_TAG, e.toString());
}
@Override
public void onResponse(Response response) throws IOException {
Log.w(LOG_TAG, response.body().string());
Log.i(LOG_TAG, response.toString());
}
});
问题:
- OkHttp 使用异步请求的正确方法是什么?
- 将 AsyncTask 与 OkHTTP 一起使用是一种好习惯吗?
- 在哪些情况下我应该使用带有 OkHttp 的 AsyncTask 而不是使用 OkHttp 异步 api?