【问题标题】:Null pointer exception in Retrofit 2 GET request reponse method [duplicate]Retrofit 2 GET请求响应方法中的空指针异常[重复]
【发布时间】:2017-08-02 05:23:01
【问题描述】:

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

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

当我运行时,我收到一条错误消息,指出方法 getMovies 产生了一个空指针异常

API接口

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 POINTER EXCEPTION。 我的错在哪里??

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

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

我的错误在哪里?

【问题讨论】:

  • 你在邮递员或其他休息客户端检查过网址
  • 为什么在响应代码中写 movies = response.body().getResults(); 而不是 movies = response.body().getMovies();
  • 尝试调试并检查response.body() 的值,如果为null,请检查response.errorBody() 的输出。你也许可以修复它。
  • 是的,我什么都试过了。我尝试了记录、调试、删除与 api 调用相关的所有代码并再次编写它。没有任何效果

标签: java android nullpointerexception retrofit2


【解决方案1】:

我修好了。我的基本 url 和 Api 端点有问题。 基本 url 必须以 / 结尾,但我以 / 开始我的端点

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 2014-02-04
    相关资源
    最近更新 更多