Я хочу вернуть GetCheapestResponseType
объект из Retrofit (асинхронно вызванный) с Rx Java:
Это мой метод:
public Single<GetCheapestResponseType> getCheapest(...) {
...
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(urlGetCheapest)
.addConverterFactory(GsonConverterFactory.create())
.client(httpClient.build())
.build();
Controller controller = retrofit.create(Controller.class);
Call<GetCheapestResponseType> callAsync = controller.getCheapest(...);
callAsync.enqueue(new Callback<GetCheapestResponseType>() {
@SneakyThrows
@Override
public void onResponse(Call<GetCheapestResponseType> call, Response<GetCheapestResponseType> response) {
...
// return GetCheapestResponseType; ??
}
@Override
public void onFailure(Call<GetCheapestResponseType> call, Throwable throwable) {
// return throwable; ??
}
});
}
Итак, я сделал * 1007 Интерфейс * GetCheapestCallbacks :
public interface GetCheapestCallbacks {
void onSuccess(@NonNull String result);
void onError(@NonNull Throwable result);
}
Я добавил его в качестве параметра для getCheapest(... , @Nullable GetCheapestCallbacks callbacks))
метода
и onResponse()
метода, который я добавил:
calbacks.onSuccess(...);
и onFailure()
метод, который я добавил:
callbacks.onError(throwable);
В интерфейсе контроллера у меня есть:
public interface Controller {
@GET("oneWayFares")
public Single<GetCheapestResponseType> getCheapest(...);
}
Я изменил:
Call<GetCheapestResponseType> callAsync = controller.getCheapest(...);
Для:
Single<GetCheapestResponseType> callAsync = controller.getCheapest(...);
А теперь я не могу вызвать enqueue()
метод для него.
Как заставить его работать?