簡體   English   中英

無法從Rxjava Retrofit檢索響應

[英]Not able to retrieve response from Rxjava Retrofit

我試圖得到回應,但我沒有得到回應。 我也沒有任何錯誤。 我做錯了什么? 通過jsonscema2Pojo.org制作POJO

可能是我打電話的方式

 @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); 
}

可能是您的錯誤被忽略了,正如我所看到的,您的onError為空白。 當您使用RxJava和Retrofit打服務時。 結果將成功或錯誤。 因此onError不應為空。 至少放置e.printStackTrace()。 並確保已調用方法loadAnswers()。 您提供的代碼沒有調用該方法。

@Override
public void onError(Throwable e) {   
 e.printStackTrace()
}

我認為您需要在以下方法中調用load answer方法。

 public void loadNextDataFromApi(int itemCount) {
    mService = ApiUtils.getSOService2();
    loadAnswers();
} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM