2016-08-03 91 views
1

logcat的:

java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to com.google.api.services.youtube.YouTube$Videos$List 

異常:onError被稱爲在代碼波紋管

IService mService = application.getIService(Constants.mYoutubeUrl); 
subscription = mService.getYoutubeVideos(Constants.mYoutubeKey ,Constants.mYoutubeChannelId) 
       .observeOn(AndroidSchedulers.mainThread()) 
       .subscribeOn(application.defaultSubscribeScheduler()) 
       .subscribe(new Observer<YouTube.Videos.List>() { 
        @Override 
        public void onCompleted() { 

        } 

        @Override 
        public void onError(Throwable e) { 
         videoMvpView.showMessage(R.string.probleme_connection); 
        } 

        @Override 
        public void onNext(YouTube.Videos.List videos) { 
         videoMvpView.showVideos(videos); 
         videoMvpView.showSelectedVideo(((Video)videos.get(0)).getSnippet().getTitle()); 
        } 
       }); 

IService.java

public interface IService { 
@GET("/youtube/v3/search?part=snippet,id&order=date&maxResults=20") 
Observable<YouTube.Videos.List> getYoutubeVideos(@Query("key") String key, @Query("channelId") String channelId); 


class Factory { 
    public static IService create(String baseUrl) { 
     Retrofit retrofit = new Retrofit.Builder() 
       .baseUrl(baseUrl) 
       .addConverterFactory(GsonConverterFactory.create()) 
       .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) 
       .build(); 
     return retrofit.create(IService.class); 
    } 
} 

}

回答

0

這是必須使用YouTube.Videos.List類,如果不採取原始字符串轉換響應它使用json2schema然後嘗試用它來POJO,這可能幫助,如果你必須使用比你需要檢查的結構YouTube.Videos.List類,如果你可以提供原始響應,它可能有助於解決問題

相關問題