JSON Null Poiner例外

时间:2017-05-25 08:57:46

标签: android json api nullpointerexception

我遇到了一个非常奇怪的问题。我已经使用API创建了天气应用程序。问题在于,当我打电话给" CONDITION"对象,比我得到一个空指针异常。但是当我调用另一个对象时,一切都很好!有点奇怪。在2周内,这个API运行良好,但从昨天开始,没有。任何人都可以解释我,为什么会这样,我必须做什么。因为应用程序已经完成,而我正在制作另一个应用程序,并且我不想仅仅因为该问题而重写此应用程序。

我将我的回复放在另一个应用程序中,以检查问题可能在我的应用程序中,而不是在API中。这是代码..

API CLASS:

public interface WeatherAPI {
    @GET("/v1/current.json?key=fe1c9cd3fd2d4b189c010010172505")
    Call<Weather> getForecastWeather(
            @Query("q") String cityName
           // @Query("days")Integer days
    );
}

控制器类:

public class Controller {

    static final String BASE_WEATHER_URL = "https://api.apixu.com/";


    public static WeatherAPI getApi(){
        Gson gson = new GsonBuilder()
                .setLenient()
                .create();

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(BASE_WEATHER_URL)
                .addConverterFactory(GsonConverterFactory.create(gson))
                .build();

        WeatherAPI weatherAPI = retrofit.create(WeatherAPI.class);

        return weatherAPI;
    }
}

主要活动类别:

mWeatherAPI = Controller.getApi();

        mWeatherAPI.getForecastWeather("Paris").enqueue(new Callback<Weather>() {
            @Override
            public void onResponse(Call<Weather> call, Response<Weather> response) {
                String description = response.body().getCurrent().getCondition().getIcon();
                Log.e("TAG", "description: " + description);
            }

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

                Log.e("TAG", "onFailure: " + t.getMessage());
            }
        });

2 个答案:

答案 0 :(得分:1)

是的,您需要将OkHttpClient添加到Retrofit

 OkHttpClient.Builder httpClientBuilder = new OkHttpClient.Builder();
 Retrofit retrofit = Retrofit.Builder().baseUrl(yourBaseUrlString)
                .addConverterFactory(GsonConverterFactory.create())
           .retrofitBuilder.client(okHttpClientBuilder.build()).build();

答案 1 :(得分:0)

检查json对象是否创建了u。