带有改造库的 nullPointerException

我正在使用改造来访问 API,但我无法获取此 API 的数据


API 链接


我能够使我的代码与这个 API 一起工作:(这个),但是当我重做代码以使用前一个代码时,我在我用来显示结果的第一行的 ActivityMain 中得到了 nullPointer 错误。


代码:


MainActivity:


public class MainActivity extends AppCompatActivity {


@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);


    Retrofit retrofit = new Retrofit.Builder()

            .baseUrl(UdacityService.BASE_URL)

            .addConverterFactory(GsonConverterFactory.create())

            .build();


    UdacityService service = retrofit.create(UdacityService.class);

    Call<CharacterCatalog> requestCatalog = service.listCatalog();


    requestCatalog.enqueue(new Callback<CharacterCatalog>() {

        @Override

        public void onResponse(Call<CharacterCatalog> call, Response<CharacterCatalog> response) {

            if(!response.isSuccessful()){

                Log.e("ERRO", "Erro no servidor (" + response.code() + ")");

            }

            else {

                CharacterCatalog catalog = response.body();

                for (Result c : catalog.results){

                    Log.i("RESULT", String.format("id; %s, name: %s\n",c.id, c.name));


                    for (Origin o : c.origins){

                        Log.i("RESULT", String.format("nome; %s, url: %s\n",o.name, o.url));

                    }

                    Log.i("RESULT", "/////////////////////////////////////////");

                }

            }


        }


        @Override

        public void onFailure(Call<CharacterCatalog> call, Throwable t) {

            Log.e("ERRO", "Verifique a conexão com a internet (" + t.getMessage() + ")");

        }

    });

}}


Interface retofit:


public interface ApiService {

public static final  String BASE_URL = "https://rickandmortyapi.com/api/";


@GET("character")

Call<CharacterCatalog> listCatalog();

}

列出结果:


public class CharacterCatalog {

public List<Result> results;

}

有人可以帮我解决这个错误吗?


四季花海
浏览 109回答 2
2回答

长风秋雁

请确认您已为您的数据类使用此格式@SerializedName("id")private Integer id;@SerializedName("name")private String name;@SerializedName("status")private String status;@SerializedName("species")private String species;@SerializedName("type")private String type;@SerializedName("gender")private String gender;@SerializedName("origin")private Origin origin;@SerializedName("location")private Location location;@SerializedName("image")private String image;@SerializedName("episode")private List<String> episode = null;@SerializedName("url")private String url;@SerializedName("created")private String created;检查此 URL 以创建 POJOS: http: //www.jsonschema2pojo.org/ 请确保您实际连接到服务器,请确认您从服务器获得 200 答案

慕哥9229398

感谢大家的帮助,但我解决了这个问题......在我的课堂结果中,我使用了一个来源列表,但 API 只返回一个对象......我只删除了 List 类型。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java