改造取消()&检查请求是否已发送到服务器

时间:2018-03-21 08:51:10

标签: android retrofit retrofit2

如何确保在Retrofit原因请求中调用cancel()不会传递给服务器?

目前我知道,在Retrofit上调用cancel会调用回调的onFailure分支。然后我可以检查失败的原因是否因为呼叫被取消了。 https://futurestud.io/tutorials/retrofit-2-cancel-requests

但我可以肯定地说,该请求没有到达服务器吗?

1 个答案:

答案 0 :(得分:0)

来自here

的代码段
new Callback<ResponseBody>() {  
        @Override
        public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
            Log.d(TAG, "request success");
        }

        @Override
        public void onFailure(Call<ResponseBody> call, Throwable t) {
            if (call.isCanceled()) {
                Log.e(TAG, "request was cancelled");
            }
            else {
                Log.e(TAG, "other larger issue, i.e. no network connection?");
            }

        }
    };

据说,如果电话被取消,这将会提高,正如它所说的那样

// something happened, for example: user clicked cancel button call.cancel();

如果您致电call.cancel(),请稍后再说这意味着您已收到服务器的回复,因此您无法前往onFailurecall.isCanceled()正在检查:)

  

如果您取消请求,Retrofit会将此类别归类为失败请求,从而在您的请求声明中调用onFailure()回调。当没有Internet连接或网络级别出现问题时,也会使用此回调。从应用程序的角度来看,这些错误有点不同。