Skip to content
This repository has been archived by the owner on Jun 23, 2022. It is now read-only.

Commit

Permalink
2.01 Add the network call code
Browse files Browse the repository at this point in the history
  • Loading branch information
Lyla committed Mar 4, 2015
1 parent 1d42493 commit ea6e195
Showing 1 changed file with 66 additions and 0 deletions.
Expand Up @@ -18,13 +18,20 @@
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
Expand Down Expand Up @@ -107,6 +114,65 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container,
ListView listView = (ListView) rootView.findViewById(R.id.listview_forecast);
listView.setAdapter(mForecastAdapter);

// 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 avaiable 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();

This comment has been minimized.

Copy link
@vood

vood Oct 13, 2015

StringBuilder?

if (inputStream == null) {
// Nothing to do.
return 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");

This comment has been minimized.

Copy link
@vood

vood Oct 13, 2015

Shouldn't it be?

buffer.append(line);
buffer.append("\n");
}

if (buffer.length() == 0) {
// Stream was empty. No point in parsing.
return null;
}
forecastJsonStr = buffer.toString();
} catch (IOException e) {

This comment has been minimized.

Copy link
@schwannden

schwannden Jul 11, 2015

Should be
} catch (final IOException e) {
for consistency with line 170?

Log.e("PlaceholderFragment", "Error ", e);
// If the code didn't successfully get the weather data, there's no point in attemping
// to parse it.
return null;
} finally{
if (urlConnection != null) {
urlConnection.disconnect();
}
if (reader != null) {
try {
reader.close();
} catch (final IOException e) {
Log.e("PlaceholderFragment", "Error closing stream", e);
}
}
}

return rootView;
}
}
Expand Down

1 comment on commit ea6e195

@hetaldadhaniya12
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi,

i am trying to get data of Hawthorn,Australia. so I have passed postal code 3122. but it gives weather data of Gemeente Schiedam,NL. but when i have passed parameter like this 3122,au.it gives perfect result.
1)so how can i pass this kind of parameter q="{postalcode}{country}" in code?
2)why this two urls give different data?

http://api.openweathermap.org/data/2.5/forecast/daily?q=3122&mode=json&units=metric&cnt=7&appid=your app id

http://api.openweathermap.org/data/2.5/forecast/daily?q=3122,au&mode=json&units=metric&cnt=7&appid=your app id

Pass your Preferred Appid.

Please sign in to comment.