I am new to Retrofit. I am trying to query OpenWeatherMap with Retrofit and return some weather data.
Here is some of my code:
public static void getCurForecast(final Resources resources, final String zipCode, final String countryCode, final ForecastListener listener) {
new AsyncTask<Void, Void, CurForecastResponse>() {
@Override
protected CurForecastResponse doInBackground(Void... params) {
Log.d("TAG","in CurForecastResponse");
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("http://api.openweathermap.org")
.build();
//String zipCode = "78613";
//String countryCode = "us";
ForecastRequest service = restAdapter.create(ForecastRequest.class);
try {
String zipCodeFormat = zipCode + ",us";
Log.d("TAG","zipCodeFormat: " + zipCodeFormat);
CurForecastResponse temp = service.getCurForecast(zipCodeFormat, resources.getString(R.string.open_weather_api_key));
if(temp == null){
Log.d("TAG","TEMP = NULL!");
}
else {
Log.d("TAG","Weather: " + temp.name);
}
return temp;//service.getCurForecast(zipCodeFormat, resources.getString(R.string.open_weather_api_key));
} catch (RetrofitError error) {
Log.w("ForecastModule", "Forecast error: " + error.getMessage());
return null;
}
};
Here is part of the JSON Object:
public class CurForecastResponse {
public int cod;
public String base;
public String name;
public ForecastCurrently currently;
public ForecastHourly hourly;
public Weather main;
public CurForecastResponse() {
Log.d("TAG","CurForecastResponse Constructor");
}
public class weather {
int id;
String main;
String description;
String icon;
public weather(int id, String main, String description, String icon) {
this.id = id;
this.main = main;
this.description = description;
this.icon = icon;
}
public int getId() {return id; }
public String getDescription() {return description; }
public String getIcon() {return icon; }
public String getMain() {return main; }
}
Here is the ForecastRequest Class
public interface ForecastRequest {
//Open Weather Forecast API
@GET("/data/2.5/weather?")
CurForecastResponse getCurForecast(@Query("zip") String zipCode,
@Query("apiKey") String apiKey);
}
Here is a sample of JSON response
{"coord":{"lon":145.77,"lat":-16.92},
"weather":[{"id":801,"main":"Clouds","description":"few clouds","icon":"02d"}],
"base":"cmc stations",
"main":{"temp":305.15,"pressure":1013,"humidity":52,"temp_min":305.15,"temp_max":305.15},"wind":{"speed":5.7,"deg":40},"clouds":{"all":20},"dt":1459137600,"sys":{"type":1,"id":8166,"message":0.0092,"country":"AU","sunrise":1459110134,"sunset":1459153277},"id":2172797,"name":"Cairns","cod":200}
I am having some trouble getting data into the weather class.