我正在尝试使用retrofit2和Gson从openweather api获取数据,但它总是返回null值错误。
我尝试调试并且返回的响应很好但它返回null。
这是我的代码..
POJO CLASSES来自这里。 http://samples.openweathermap.org/data/2.5/weather?lat=35&lon=139&appid=b6907d289e10d714a6e88b30761fae22我是如何尝试获取的。
API接口
public interface Api {
String api_key = "b6907d289e10d714a6e88b30761fae22";
String BASE_URL= "http://api.openweathermap.org/data/2.5/";
@GET("weather")
Call<Weather> getWeather(@Query("lat") String latitude, @Query("lon") String longitude, @Query("appid") String api_key);
}
LoadWeather()
public void LoadWeather()
{
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Api.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
Api api = retrofit.create(Api.class);
Call<Weather> weatherCall = api.getWeather("12.9716", "77.5946", api_key);
weatherCall.enqueue(new Callback<Weather>() {
@Override
public void onResponse(Call<Weather> call, Response<Weather> response) {
Weather weather = response.body();
String temp = weather.getList().get(0).getMain().getTemp().toString();
Log.d(TAG,"onReponse :"+weather);
}
@Override
public void onFailure(Call<Weather> call, Throwable t) {
}
});
}
答案 0 :(得分:0)
您使用的是应用密钥'b6907d289e10d714a6e88b30761fae22',用于 示例(样本 .openweathermap.org)。
您必须subscribe才能获得自己的API密钥。
答案 1 :(得分:0)
您是否可能忘记在网址中包含要使用的API? 也许你需要:
String BASE_URL= "http://api.openweathermap.org/data/2.5/weather?";