Retrofit 2 GET请求响应方法

时间:2017-08-02 05:23:02

标签: java android nullpointerexception retrofit2

我正在使用改造2来查询TMDB api。在我正在进行的call.enqueue方法中

List<Movie> movies = response.body.getMovies();

当我运行时,我得到一个错误,说方法getMovies产生空指针异常

API-INTERFACE

public interface ApiInterface {

@GET("/movie/now_playing")
Call<MainMovieNowPlayingResponse> getNowPlayingMovies(@Query("page")int 
page, @Query("api_key") String API_KEY);
}

这是我的ApiClient类

public class ApiClient {

private static Retrofit retrofit = null;
public static Retrofit getClient(){
    if (retrofit == null){
        retrofit = new Retrofit.Builder()
                .baseUrl("https://api.themoviedb.org/3")
                .addConverterFactory(GsonConverterFactory.create())
                .build();

    }
    return retrofit;
 }}

这是从片段

调用的入队方法
ApiInterface service = ApiClient.getClient().create(ApiInterface.class);
    Call<MainMovieNowPlayingResponse> call = service.getNowPlayingMovies(1,API_KEY);
    call.enqueue(new Callback<MainMovieNowPlayingResponse>() {
        @Override
        public void onResponse(Call<MainMovieNowPlayingResponse> call, Response<MainMovieNowPlayingResponse> response) {
            if (response.code() == 200 && response.isSuccessful()){
                movies = response.body().getResults();
            }
        }

        @Override
        public void onFailure(Call<MainMovieNowPlayingResponse> call, 
        Throwable t) {

        }
    });

我从片段的onCreateView方法调用它,它是标签视图的一部分。

我获得的错误是response.body.getMovies()来电中的 NULL指针异常。 我的错误在哪里?

P.S:我故意没有放置模型,因为它们太长了,我不想让这个问题过于冗长。我对模型进行了三次检查,所有这些都是正确的。所有这些都是公共getter和setter的私有变量。

在你投票之前因为这是NullPointer的另一个问题,我知道空指针异常是什么。我只是无法在此代码中找到错误。

我的错误在哪里?

1 个答案:

答案 0 :(得分:1)

我修好了。我没有基本网址和Api端点的问题。 基本网址必须以/结束,而我用/

开始我的端点