改进java.lang.NullPointerException:尝试调用接口方法' java.util.Iterator java.util.List.iterator()'在null对象引用上

时间:2018-01-30 12:58:56

标签: retrofit retrofit2

我想在android中使用retrofit来获取我的mysql数据,但是我得到了一个null异常。我用邮递员测试了我的数据库,一切正常。我见过其他相关的答案,但我的不同。我的代码如下。

        Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl(LikelyProblemsClient.BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
    LikelyProblemsClient likelyProblemsClient = retrofit.create(LikelyProblemsClient.class);


    Call<List<LikelyProblems>> call = likelyProblemsClient.getProblems();

    call.enqueue(new Callback<List<LikelyProblems>>() {
        @Override
        public void onResponse(Call<List<LikelyProblems>> call, Response<List<LikelyProblems>> response) {

            List<LikelyProblems> likelyProblems = response.body();

            for (LikelyProblems l: likelyProblems){
                Log.d("id", l.getId());
                Log.d("category", l.getCategory());
                Log.d("Problems", l.getProblems());
            }


        }

        @Override
        public void onFailure(Call<List<LikelyProblems>> call, Throwable t) {
            Toast.makeText(getApplicationContext(), t.getMessage(), Toast.LENGTH_SHORT);
        }
    });

我的模特

public class LikelyProblems {
private String id;
private String category;
private String problems;

public LikelyProblems(String id, String category, String problems) {
    this.id = id;
    this.category = category;
    this.problems = problems;
}

public String getId() {
    return id;
}

public String getCategory() {
    return category;
}

public String getProblems() {
    return problems;
}
}

我的界面

public interface LikelyProblemsClient {
  String BASE_URL =  "http://192.168.1.35:85/tranxavApi/public/api/";

  @GET("vehicle-problems")
  Call<List<LikelyProblems>> getProblems();
}

请所有答案将不胜感激。感谢

2 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。我在laravel后端使用post方法而不是get方法

答案 1 :(得分:0)

我知道您问这个问题已有很长时间了,但这可能会对其他人有所帮助。 每次用户编辑文本时尝试发送请求时,我都面临相同的问题。如果您还发送多个请求,则可能会出现问题,可能是因为在某个时候您的呼叫返回的响应为空。只需检查for循环之前您的response.body是否为空。