1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | package com.example.scannrmobile; import android.os.AsyncTask; import org.apache.http.client.methods.*; import java.io.BufferedReader; import java.io.InputStreamReader; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.impl.client.DefaultHttpClient; import org.json.*; import android.util.Log; //http://www.accella.net/android-http-get-json/ public class HttpTask extends AsyncTask<HttpUriRequest,Void,JSONArray> { private static final String TAG = "Scannr_HTTP_TASK"; @Override protected JSONArray doInBackground(HttpUriRequest...params) { // Performed on Background Thread HttpUriRequest request = params[0]; HttpClient client = new DefaultHttpClient(); try { // The UI Thread shouldn't be blocked long enough to do the reading in of the stream. HttpResponse response = client.execute(request); // TODO handle bad response codes (such as 404, etc) BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8")); StringBuilder builder = new StringBuilder(); for (String line = null; (line = reader.readLine()) != null; ) { builder.append(line).append("\n"); } JSONTokener tokener = new JSONTokener(builder.toString()); JSONArray json = new JSONArray(tokener); return json; } catch (Exception e) { // TODO handle different exception cases Log.e(TAG,e.toString()); e.printStackTrace(); return null; } } @Override protected void onPostExecute(JSONArray json) { // Done on UI Thread if(json != null) { taskHandler.taskSuccessful(json); } else { taskHandler.taskFailed(); } } public static interface HttpTaskHandler { void taskSuccessful(JSONArray json); void taskFailed(); } HttpTaskHandler taskHandler; public void setTaskHandler(HttpTaskHandler taskHandler) { this.taskHandler = taskHandler; } } |