我遇到了一个非常奇怪的问题。我已经使用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());
}
});
答案 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。