2017-07-23 2 views
0

J'essaie d'obtenir des valeurs à partir d'un web en utilisant retrofit et rxAndroid mais onNext ne s'appelle pas. Ici, mes cours:onNext pas appelé Retrofit et rxAndroid

public class ForumService { 

private static final String FORUM_SERVER_URL = "http://192.168.1.104:8080/curso-fullstack/symfony/web"; 
private ForumApi mForumApi; 


public ForumService(){ 
    RequestInterceptor requestInterceptor = new RequestInterceptor() { 
     @Override 
     public void intercept(RequestFacade request) { 
      request.addHeader("Accept", "application/json"); 
     } 
    }; 

    RestAdapter restAdapter = new RestAdapter.Builder() 
      .setEndpoint(FORUM_SERVER_URL) 
      .setRequestInterceptor(requestInterceptor) 
      .setLogLevel(RestAdapter.LogLevel.FULL) 
      .build(); 

    mForumApi = restAdapter.create(ForumApi.class); 

} 

public ForumApi getmForumApi() { 
    return mForumApi; 
} 

public interface ForumApi{ 

    @GET("/video/lasts_videos") 
    public Observable<List<Data>> getVideos(); 

    /*@GET("/posts/{id}") 
    public Observable<Post> 
    getPost(@Path("id") int postId); 

    @GET("/comments") 
    public Observable<List<Comment>> 
    getComments(@Query("postId") int postId); 

    @POST("/posts") 
    public Observable<Post> postPost(Post post);*/ 
} 

}

public class ListPresenter { 

ListActivity mView; 
ForumService mForum; 

public ListPresenter(ListActivity mView, ForumService mForum) { 
    this.mView = mView; 
    this.mForum = mForum; 
} 

public void loadPosts() { 

    mForum.getmForumApi() 
      .getVideos() 
      .subscribeOn(Schedulers.newThread()) 
      .observeOn(AndroidSchedulers.mainThread()) 
      .subscribe(new Observer<List<Data>>() { 
       @Override 
       public void onCompleted() { 

       } 

       @Override 
       public void onError(Throwable e) { 

       } 

       @Override 
       public void onNext(List<Data> posts) { 

        mView.displayPosts(posts); 
       } 
      }); 
} 

}

Et puis, j'exécuter la méthode loadPosts() de mon activité, pour remplir une liste et l'affichage dans un ListView. Si je regarde à propos des journaux android, je peux voir comment affichage retrofit qui a trouvé les résultats, mais pour une raison quelconque onNext n'est jamais appelé.

enter image description here

+0

Si 'onNext' n'est pas appelé, probablement' onError' est appelé. Ajouter 'e.printStackTrace()' à 'onError' – LordRaydenMK

+0

Vous êtes confiant, mais ne savez pas comment résoudre J'ai l'erreur suivante, je sais ce que signifie, mais je suis nouveau avec retrofit et rxandroid. ERREUR:> com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: BEGIN_ARRAY attendu, mais BEGIN_OBJECT à la ligne 1 colonne 2 chemin $ –

+1

votre modèle - 'Liste ' ne correspond pas au JSON reçu. Vous pouvez copier la réponse JSON à http://www.jsonschema2pojo.org/ pour générer la classe de modèle pour vous. – LordRaydenMK

Répondre

1

De la discussion dans les commentaires:

onNext wan't été appelé parce qu'il y avait un problème dans la désérialisation JSON. onError a été appelé à la place.