Многократный запрос дооснащения вызова API не работает - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь вызвать несколько запросов API, используя модификацию, но он не работает должным образом и не возвращает ответ, который возвращает null всегда.

Кто-нибудь может мне помочь решить эту проблему?

как сделать вызов API для запроса 500?

public class CommentRepository {
    private NewsService mNewsService;
    private static CommentRepository mCommentRepository;
    private MutableLiveData<List<Story>> mStoryListObservable = new MutableLiveData<>();
    private Story story;

    public CommentRepository(){
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(NewsService.HTTPS_API)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        mNewsService = retrofit.create(NewsService.class);
    }

    private synchronized static CommentRepository getInstance(){
        if (mCommentRepository == null) {
            mCommentRepository = new CommentRepository();
        }
        return mCommentRepository;
    }

    public MutableLiveData<List<Story>> getTopStoryList() {
        List<Story> storyArrayList = new ArrayList<>();
        mNewsService.getTopStories().enqueue(new Callback<List<Long>>() {
            @Override
            public void onResponse(Call<List<Long>> call, Response<List<Long>> response) {
                List<Long> storyList = response.body();
                        for (int i = 0; i < storyList.size(); i++) {
                            Story storyDetails = getStoryDetails((long) i);
                            if (storyDetails != null)
                                storyArrayList.add(storyDetails);
                        }
                mStoryListObservable.postValue(storyArrayList);
            }

            @Override
            public void onFailure(Call<List<Long>> call, Throwable t) {
                //TODO: Need to Handle Error
            }
        });
        return mStoryListObservable;
    }

    private synchronized Story getStoryDetails(Long storyItem) {
        mNewsService.getStoryItem(String.valueOf(storyItem)).
                enqueue(new Callback<Story>() {
                    @Override
                    public void onResponse(Call<Story> call, Response<Story> response) {
                        simulateDelay();
                        story = response.body();
                    }

                    @Override
                    public void onFailure(Call<Story> call, Throwable t) {
                        // TODO better error handling
                        //storyData.setValue(null);
                    }
                });
        return story;
    }
}

Должен возвращать результат 500 api запроса вышеуказанного кода

...