Получить массив json объектов в resposponse Retrofit

240
06 октября 2017, 15:20

Есть метод с помощью которого я получаю список песен с сервера.

@GET("/apiV2/MusicSong/GetMusicSongs")
Call<List<Song>> getMusicSongs();

Что бы извлечь данные из ответа я делаю так:

 Call<List<Song>> musicSongs = RestManager.getApiInterface().getMusicSongs(3,"Step");
        musicSongs.enqueue(new Callback<List<Song>>() {
            @Override
            public void onResponse(Call<List<Song>> call, Response<List<Song>> response) {
                List<Song> body = response.body();
                for (Song song : body) {
                    Log.d(TAG, song.toString());
                }
            }
            @Override
            public void onFailure(Call<List<Song>> call, Throwable t) {
                t.printStackTrace();
            }
        });

Но я не хочу использовать callback и хочу что бы метод запросы выглядел так:

@GET("/apiV2/MusicSong/GetMusicSongs")
List<Song> getMusicSongs();

но при вызове метода таким способом я получаю ошибку:

Caused by: java.lang.IllegalArgumentException: Could not locate call adapter for java.util.List.

Можно ли как то получить ответ без использования callback , делаю запрос таким образом:

List<Song> getMusicSongs();
Answer 1

Синхронно выполнить запрос возможно. Делается так:

List songs = RestManager.getApiInterface().getMusicSongs(3,"Step").execut‌​e().body();

Но и в этом случае сигнатура метода должна оставаться стандартной, т.е. возвращаться должен Call.

READ ALSO
Protected в Java при наследовании

Protected в Java при наследовании

Позволяет ли модификатор protected сделать так: объявить protected static переменную-член в абстрактном классе, чтобы в каждом его наследнике этот член...

316
Set, HashSet и for each цикл

Set, HashSet и for each цикл

Доброго времени суток, и не могли бы Вы мне объяснить, почему в примере ниже тип Stribg требует заменить Objeсt-ом? Ведь при добавлении явно видно,...

273
JavaFX. Изменение формы элемента

JavaFX. Изменение формы элемента

Доброго времени суток! Возник вопрос - как изменить форму Pane, например, в трапецию? С помощью PanesetStyle("-fx-background-radius: 0 0 5000 5000;"); можно добиться...

258
Updater для программы/игры

Updater для программы/игры

Учавствую в разработке некой игры и наконец-то устали заливать новую копию игры каждый раз, учитывая что она уже весит 3+ гиговРешили заранее...

307