我正在尝试使用java获取一些天气数据。我使用以下java api从wunderground.com获取数据
https://code.google.com/p/wunderground-core/
他们在网站上提供的示例代码适用于(德国的多特蒙德)。但是,当我在美国的多特蒙德将密钥更改为波士顿时,我得到空指针错误。知道我可能做错了吗?请尝试并留下意见/建议。谢谢!
代码:
import de.mbenning.weather.wunderground.api.domain.DataSet;
import de.mbenning.weather.wunderground.api.domain.WeatherStation;
import de.mbenning.weather.wunderground.api.domain.WeatherStations;
import de.mbenning.weather.wunderground.impl.services.HttpDataReaderService;
public class weather {
public static void main(String[] args)
{
// create a instance of a wunderground data reader
HttpDataReaderService dataReader = new HttpDataReaderService();
// select a wunderground weather station (ID "INORDRHE72" = Dortmund-Mengede)
WeatherStation weatherStation = WeatherStations.ALL.get("INORDRHE72");
// KMABOSTO22 is the ID for Boston South end
//WeatherStation weatherStation = WeatherStations.ALL.get("KMABOSTO32");
// set selected weather station to data reader
dataReader.setWeatherStation(weatherStation);
// get current (last) weather data set from selected station
DataSet current = dataReader.getCurrentData();
// print selected weather station ID
System.out.println(weatherStation.getStationId());
// print city, state and country of weather station
System.out.println(weatherStation.getCity() + " " + weatherStation.getState() + " " + weatherStation.getCountry());
//`enter code here` print datetime of measure and temperature ...
System.out.println(current.getDateTime() + " " + current.getTemperature());
}
}
答案 0 :(得分:1)
查看Wunderground API的源代码。
svn checkout http://wunderground-core.googlecode.com/svn/trunk/ wunderground-core-read-only
在 de.mbenning.weather.wunderground.api.domain 包中,有一个名为 WeatherStations 的类。在那里,您可以找到您可以在代码中调用的所有气象站的内容。 现在只有几个:
public static final Map<String, WeatherStation> ALL = new HashMap<String, WeatherStation>();
static {
ALL.put("INRWKLEV2", INRWKLEV2_KLEVE);
ALL.put("INORDRHE110", INORDRHE110_GOCH);
ALL.put("IDRENTHE48", IDRENTHE48_COEVORDEN);
ALL.put("IZEELAND13", IZEELAND13_GOES);
ALL.put("INORDRHE72", INORDRHE72_DORTMUND);
ALL.put("INOORDBR35", INOORDBR35_BOXMEER);
};
所有其他人都无法工作。
答案 1 :(得分:1)
它的工作原理:您可以实例化在WUnderground上注册的每个气象站。 可以将station id设置为contructor参数:
WeatherStation aWeatherStation = new WeatherStation("INORDRHE72");
HttpDataReaderService dataReader = new HttpDataReaderService();
dataReader.setWeatherStation(aWeatherStation );
Double currentTemperature = dataReader.getCurrentData().getTemperature();