2013-11-24 3 views
1

Я пытаюсь получить данные о погоде с помощью java. Я использую следующий Java API для извлечения данных из wunderground.comПолучение данных о погоде с использованием java и wunderground api

https://code.google.com/p/wunderground-core/

Пример кода они дают на их сайте работает хорошо для (Dortmund в Германии). Однако, когда я меняю ключ из дортмунда в Бостон в U.S.A, я получаю ошибки с нулевым указателем. Любая идея, что я могу делать неправильно? Пожалуйста, попробуйте и оставляйте комментарии/советы. Благодаря!

Код:

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

Вы хотите получать 'NullPointerException's если' 'weatherStation' является null'. Вы уверены, что это часть объекта WeatherStations.ALL? Вы пробовали отладку? – t0mppa

+0

Какой номер станции вы пробовали в Бостоне? – Reda

+0

KMABOSTO32 // WeatherStation weatherStation = WeatherStations.ALL.get ("KMABOSTO32"); – Ammar

ответ

1

Заканчивать исходный код API Wunderground.

svn checkout http://wunderground-core.googlecode.com/svn/trunk/ wunderground-core-read-only 

В пакете de.mbenning.weather.wunderground.api.domain есть класс называется метеостанций. Там вы найдете содержание всех метеостанций, которые вы можете вызвать в своем коде. Прямо сейчас есть только несколько из них:

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

Работает: Вы можете создать экземпляр каждой метеостанции, зарегистрированной на WUnderground. Можно установить идентификатор станции в качестве параметра: застройщик

WeatherStation aWeatherStation = new WeatherStation("INORDRHE72"); 

HttpDataReaderService dataReader = new HttpDataReaderService(); 
dataReader.setWeatherStation(aWeatherStation); 

Double currentTemperature = dataReader.getCurrentData().getTemperature();