package com.example.flickrbrowser2; import android.os.AsyncTask; import android.util.Log; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; enum DownloadStatus {IDLE, PROCESSING, NOT_INITIALISED, FAILED_OR_EMPTY, OK} public class GetRawData extends AsyncTask<String, Void, String> { private static final String TAG = "GetRawData"; private DownloadStatus mDownloadStatus; private final OnDownloadComplete mCallback; interface OnDownloadComplete { void onDownloadComplete(String data, DownloadStatus status); } public GetRawData(OnDownloadComplete Callback) { this.mDownloadStatus = DownloadStatus.IDLE; mCallback = Callback; } void runInSameThread(String s) { Log.d(TAG, "runInSameThread: Starts"); if(mCallback!=null) { mCallback.onDownloadComplete(doInBackground(s),mDownloadStatus); } Log.d(TAG, "runInSameThread: ends"); } @Override protected void onPostExecute(String s) { Log.d(TAG, "onPostExecute: parameter is" + s); if (mCallback != null) { mCallback.onDownloadComplete(s, mDownloadStatus); } Log.d(TAG, "onPostExecute: ends"); } @Override protected String doInBackground(String... strings) { HttpURLConnection connection = null; BufferedReader reader = null; if (strings == null) { mDownloadStatus = DownloadStatus.NOT_INITIALISED; return null; } try { mDownloadStatus = DownloadStatus.PROCESSING; URL url = new URL(strings[0]); connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.connect(); int response = connection.getResponseCode(); Log.d(TAG, "doInBackground: the response code was" + response); StringBuilder result = new StringBuilder(); reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); //String line; //while(null!=(line= reader.readLine())) for (String line = reader.readLine(); null != line; line = reader.readLine()) { result.append(line).append("\n"); } mDownloadStatus = DownloadStatus.OK; return result.toString(); } catch (MalformedURLException e) { Log.e(TAG, "doInBackground:Invalid URL" + e.getMessage()); } catch (IOException e) { Log.e(TAG, "doInBackground: " + e.getMessage()); } catch (SecurityException e) { Log.e(TAG, "doInBackground: Permission required" + e.getMessage()); } finally { if (connection != null) { connection.disconnect(); } if (reader != null) { try { reader.close(); } catch (IOException e) { Log.e(TAG, "doInBackground: error closing reader" + e.getMessage()); } } } mDownloadStatus = DownloadStatus.FAILED_OR_EMPTY; return null; } }