gpt4 book ai didi

java - 如何取消改造请求

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:48:20 24 4
gpt4 key购买 nike

我滚动浏览官方 documentation Retrofit 并决定在我的项目中实现类似的东西,这样用户总是可以选择取消下载文件,一切都会正常工作。实现适当的方法,凡未能规定如下:

service.upload1(file1, str, stringMap, new Callback<ImageUpload>() {
@Override
public void success(final ImageUpload imageUpload, Response response) {
mRecyclerView.post(new Runnable() {
@Override
public void run() {
...
});
}

@Override
public void failure(RetrofitError error) {
if (error.isCanceled()) {
Log.e(TAG, "request is cancelled");
} else {
Log.e(TAG, "other larger issue, i.e. no network connection?");
}
}

但在失败方法中用红色下划线isCanceled。我不明白这是什么问题,因为我们最初提出的这个方法是类Call(也许是因为我发誓而不是类Call是RetrofitError?)请告诉我如何修复。我使用的是 Retrofit 1.9,不需要继续 Retrofit 2。

最佳答案

据我所知,

error.isCanceled() 似乎不存在于 Retrofit 中。如果您希望能够取消请求,您可以切换到 Retrofit 2,那里有一个 call.cancel() 方法,或者在当前版本的 Retrofit 中,您可以扩展 Callback 类以创建您自己的类 CancellableCallback,如下所示:

public class CancellableCallback<T> implements Callback<T> {

private Callback<T> callback;

private boolean canceled;

private CancellableCallback() {}

public CancellableCallback(Callback<T> callback) {
this.callback = callback;
canceled = false;
}

public void cancel() {
canceled = true;
callback = null;
}

@Override
public void success(T o, Response response) {
if (!canceled) {
callback.success(o, response);
}
}

@Override
public void failure(RetrofitError error) {
if (!canceled) {
callback.failure(error);
}
}
}

编辑

然后你可以像这样使用它:

CancellableCallback callback = new Callback<ImageUpload>() {
@Override
public void success(final ImageUpload imageUpload, Response response) {
mRecyclerView.post(new Runnable() {
@Override
public void run() {
...
});
}

@Override
public void failure(RetrofitError error) {

}
};

service.upload1(file1, str, stringMap, callback);

然后像这样取消它:

if (some condition && callback != null) {
callback.cancel();
}

关于java - 如何取消改造请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39592084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com