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

时间:2017-12-20 05:08:33

标签: android android-asynctask callback retrofit retrofit2

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

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

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

1 个答案:

答案 0 :(得分:0)

您可以使用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:

  

compile' com.squareup.okhttp3:logging-interceptor:3.8.1'