如何检查Retrofit请求呼叫是否完成?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检查Retrofit请求呼叫是否完成?相关的知识,希望对你有一定的参考价值。

如何弄清楚我的请求调用是否已执行?在AsyncTask中,我们只需检查(mPlaceObj.getStatus().equals(AsyncTask.Status.FINISHED)并返回一个布尔值。

另一方面,在改造中,我们使用方法mCall.isExecuted(),如果此调用是{@linkplain #execute()执行}或{@linkplain #enqueue(Callback)入队},则返回true。

那么,有什么办法可以做,请建议吗?

答案

您可以使用HttpLoggingInterceptor检查Retrofit请求调用。

HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);

OkHttpClient.Builder httpClient = new OkHttpClient.Builder().connectTimeout(60, TimeUnit.SECONDS)
                .writeTimeout(60, TimeUnit.SECONDS)
                .readTimeout(60, TimeUnit.SECONDS)
httpClient.addInterceptor(logging);

将此记录器与您的改装对象一起使用,如下所示:

Retrofit  retrofit = new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .client(httpClient.build())
                    .build();

您将在Logcat Monitor中获取Request Call的Logcat。跟踪它。

您将使用Retrofit获得两个州,即onResponse&onFailure。如果您的电话已成功完成,那么您可以在onResponse中找到您的电话,如果有异常,那么您的电话将在onFailure中。

参考这个tutorial,你会对改造及其功能有更多的了解。

对Logger使用此依赖项:

编译'com.squareup.okhttp3:logging-interceptor:3.8.1'

以上是关于如何检查Retrofit请求呼叫是否完成?的主要内容,如果未能解决你的问题,请参考以下文章

导航到另一个片段时触发 API 调用

如何使用 Retrofit 将参数传递给 POST 请求,然后序列化请求?

如何取消所有排队的请求onFailure? (改造 2)

Python 向 Postman 请求代码片段

如何在 Retrofit 中创建用于暂停功能的调用适配器?

如何检查改造请求调用是不是完成?