Я пытаюсь вызвать несколько запросов 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 запроса вышеуказанного кода