getUser-6ren">
gpt4 book ai didi

java - Retrofit 2 - 如何在没有 Call 对象的情况下发出请求

转载 作者:行者123 更新时间:2023-12-01 17:30:25 29 4
gpt4 key购买 nike

我使用 Retrofit 2,并且我有 UserService 和返回对象 Call 的剩余方法。我想调用这些方法并仅返回数据对象。

我有这个:

@GET("users")
Call<List<UserDTO>> getUsers();

但我想要:

@GET("users")
List<UserDTO> getUsers();

我知道在 Retrofit 1.9 中默认情况下这是可能的,但我找不到这个问题的解决方案。我不想每次使用它时都调用方法、执行调用、获取正文并进行 try..catch。

当我调用第二个示例中的方法时,我收到错误:

Could not locate call adapter for java.util.List<>

是否可以在任何适配器中处理这种情况?以及如何做到这一点?

最佳答案

我这样解决了这个问题:

public class CustomCallAdapter<T> implements CallAdapter<T, T> {

private Type returnType;

public CustomCallAdapter(Type returnType) {
this.returnType = returnType;
}

@Override
public Type responseType() {
return returnType;
}

@Override
public T adapt(Call<T> call) {
try {
return call.execute().body();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}

public static class Factory extends CallAdapter.Factory {

@Override
public CallAdapter<?, ?> get(Type returnType, Annotation[] annotations, Retrofit retrofit) {
return new CustomCallAdapter(returnType);
}
}
}

关于java - Retrofit 2 - 如何在没有 Call 对象的情况下发出请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61131974/

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