如何确保在Retrofit原因请求中调用cancel()不会传递给服务器?
目前我知道,在Retrofit上调用cancel会调用回调的onFailure分支。然后我可以检查失败的原因是否因为呼叫被取消了。 https://futurestud.io/tutorials/retrofit-2-cancel-requests
但我可以肯定地说,该请求没有到达服务器吗?
答案 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()
,请稍后再说这意味着您已收到服务器的回复,因此您无法前往onFailure
点call.isCanceled()
正在检查:)
如果您取消请求,Retrofit会将此类别归类为失败请求,从而在您的请求声明中调用onFailure()回调。当没有Internet连接或网络级别出现问题时,也会使用此回调。从应用程序的角度来看,这些错误有点不同。