diskostu
2/7/2015 - 4:53 PM

Udacity_ud853_2.5.java

// These two need to be declared outside the try/catch
// so that they can be closed in the finally block.
HttpURLConnection urlConnection = null;
BufferedReader reader = null;
 
// Will contain the raw JSON response as a string.
String forecastJsonStr = null;
 
try {
    // Construct the URL for the OpenWeatherMap query
    // Possible parameters are available at OWM's forecast API page, at
    // http://openweathermap.org/API#forecast
    URL url = new URL("http://api.openweathermap.org/data/2.5/forecast/daily?q=94043&mode=json&units=metric&cnt=7");
 
    // Create the request to OpenWeatherMap, and open the connection
    urlConnection = (HttpURLConnection) url.openConnection();
    urlConnection.setRequestMethod("GET");
    urlConnection.connect();
 
    // Read the input stream into a String
    InputStream inputStream = urlConnection.getInputStream();
    StringBuffer buffer = new StringBuffer();
    if (inputStream == null) {
        // Nothing to do.
        forecastJsonStr = null;
    }
    reader = new BufferedReader(new InputStreamReader(inputStream));
 
    String line;
    while ((line = reader.readLine()) != null) {
        // Since it's JSON, adding a newline isn't necessary (it won't affect parsing)
        // But it does make debugging a *lot* easier if you print out the completed
        // buffer for debugging.
        buffer.append(line + "\n");
    }
 
    if (buffer.length() == 0) {
        // Stream was empty.  No point in parsing.
        forecastJsonStr = null;
    }
    forecastJsonStr = buffer.toString();
} catch (IOException e) {
    Log.e("PlaceholderFragment", "Error ", e);
    // If the code didn't successfully get the weather data, there's no point in attempting
    // to parse it.
    forecastJsonStr = null;
} finally{
    if (urlConnection != null) {
        urlConnection.disconnect();
    }
    if (reader != null) {
        try {
            reader.close();
        } catch (final IOException e) {
            Log.e("PlaceholderFragment", "Error closing stream", e);
        }
    }
}