Не удалось получить ответ от Rxjava Retrofit
Я пытаюсь получить ответ, но не получаю его. Также я не получаю никаких ошибок. что я делаю не так? сделал POJO через jsonscema2Pojo.org
может быть, как я звоню
@GET("16126940.json")
Observable <NewsFeed> getFinalData();
в сервисе это неправильно
я имею дело с ниже JSON
{
"by": "Doubleguitars",
"descendants": 70,
"id": 16126940,
"kids": [
16131536,
16131286,
16132328,
16132016,
16132256,
16131390,
16132386,
16132049,
16132088,
16132206,
16132895,
16131438,
16132082,
16132859,
16131517,
16131474,
16133112
],
"score": 173,
"time": 1515698746,
"title": "The Making of Apple’s Emoji",
"type": "story",
"url": "https://medium.com/@agzmn/the-making-of-apples-emoji-how-
designing-these-tiny-icons-changed-my-life-16317250a9ee"
}
мой код в деятельности
public void loadNextDataFromApi(int itemCount) {
mService = ApiUtils.getSOService2();
}
public void loadAnswers(){
mService.getFinalData().subscribeOn(Schedulers.io()).
observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<NewsFeed>() {
@Override
public void onCompleted() { }
@Override
public void onError(Throwable e) { }
@Override
public void onNext(NewsFeed response) {
Log.e("response", "response------------------>" +
response.toString());
}
});
}
Модернизированный клиент
public class RetrofitClient {
private static Retrofit retrofit = null;
public static Retrofit getClient(String baseUrl) {
if (retrofit==null) {
retrofit = new Retrofit.Builder()
.baseUrl(baseUrl)
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
}
мой сервис
public interface SOService {
@GET("16126940.json")
Observable <NewsFeed> getFinalData();
}
в утилите я сохранил вызов метода
public static final String HTTP_JSON_URL = "https://hackernews.firebaseio.com/v0/item/";
public static SOService getSOService2() {
return RetrofitClient.getClient(HTTP_JSON_URL).create(SOService.class);
}
1 ответ
Может быть, ваши ошибки игнорируются, как я вижу, ваша ошибка onError пуста. когда вы нажимаете сервис, используя RxJava и Retrofit. результат будет успешным или ошибочным. поэтому ошибка onError не должна быть пустой. поставить e.printStackTrace() как минимум. а также убедитесь, что вы вызвали метод loadAnswers(). В предоставленном вами коде этот метод не называется..
@Override
public void onError(Throwable e) {
e.printStackTrace()
}
Я думаю, вам нужно вызвать метод загрузки ответа в методе ниже.
public void loadNextDataFromApi(int itemCount) {
mService = ApiUtils.getSOService2();
loadAnswers();
}