OpenWeather api返回null值

时间:2018-05-08 10:19:39

标签: android-studio retrofit retrofit2 weather-api openweathermap

我正在尝试使用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) {

            }

        });
    }

2 个答案:

答案 0 :(得分:0)

您使用的是应用密钥'b6907d289e10d714a6e88b30761fae22',用于 示例(样本 .openweathermap.org)。

您必须subscribe才能获得自己的API密钥。

答案 1 :(得分:0)

您是否可能忘记在网址中包含要使用的API? 也许你需要:

String BASE_URL= "http://api.openweathermap.org/data/2.5/weather?";