onNext 未调用 Retrofit 和 rxAndroid
onNext not called Retrofit and rxAndroid
我正在尝试使用改造和 rxAndroid 从 Web 获取值,但没有调用 onNext。
在这里,我的 类:
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);
}
});
}
}
然后,我从 activity 执行方法 loadPosts()
来填充列表并显示在 ListView 中。
如果我查看 android 日志,我可以看到改造如何向我显示找到结果,但出于任何原因永远不会调用 onNext。
来自评论中的讨论:
onNext
未被调用,因为 JSON 反序列化中存在问题。 onError
被调用。
我正在尝试使用改造和 rxAndroid 从 Web 获取值,但没有调用 onNext。 在这里,我的 类:
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);
}
});
}
}
然后,我从 activity 执行方法 loadPosts()
来填充列表并显示在 ListView 中。
如果我查看 android 日志,我可以看到改造如何向我显示找到结果,但出于任何原因永远不会调用 onNext。
来自评论中的讨论:
onNext
未被调用,因为 JSON 反序列化中存在问题。 onError
被调用。