Created
June 5, 2011 03:40
-
-
Save emoa2l/1008619 to your computer and use it in GitHub Desktop.
Android async JSONClient
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Activity1 extends Activity { | |
@Override | |
public void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.main); | |
JSONClient client = new JSONClient(this, l); | |
String url = "url that will return JSON"; | |
client.execute(url); | |
} | |
GetJSONListener l = new GetJSONListener(){ | |
@Override | |
public void onRemoteCallComplete(JSONObject jsonFromNet) { | |
// add code to act on the JSON object that is returned | |
} | |
}; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import org.json.JSONObject; | |
public interface GetJSONListener { | |
public void onRemoteCallComplete(JSONObject jsonFromNet); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.BufferedReader; | |
import java.io.IOException; | |
import java.io.InputStream; | |
import java.io.InputStreamReader; | |
import org.apache.http.HttpEntity; | |
import org.apache.http.HttpResponse; | |
import org.apache.http.client.ClientProtocolException; | |
import org.apache.http.client.HttpClient; | |
import org.apache.http.client.methods.HttpGet; | |
import org.apache.http.impl.client.DefaultHttpClient; | |
import org.json.JSONException; | |
import org.json.JSONObject; | |
import android.app.ProgressDialog; | |
import android.content.Context; | |
import android.os.AsyncTask; | |
import android.util.Log; | |
public class JSONClient extends AsyncTask<String, Void, JSONObject>{ | |
ProgressDialog progressDialog ; | |
GetJSONListener getJSONListener; | |
Context curContext; | |
public JSONClient(Context context, GetJSONListener listener){ | |
this.getJSONListener = listener; | |
curContext = context; | |
} | |
private static String convertStreamToString(InputStream is) { | |
/* | |
* To convert the InputStream to String we use the BufferedReader.readLine() | |
* method. We iterate until the BufferedReader return null which means | |
* there's no more data to read. Each line will appended to a StringBuilder | |
* and returned as String. | |
*/ | |
BufferedReader reader = new BufferedReader(new InputStreamReader(is)); | |
StringBuilder sb = new StringBuilder(); | |
String line = null; | |
try { | |
while ((line = reader.readLine()) != null) { | |
sb.append(line + "\n"); | |
} | |
} catch (IOException e) { | |
e.printStackTrace(); | |
} finally { | |
try { | |
is.close(); | |
} catch (IOException e) { | |
e.printStackTrace(); | |
} | |
} | |
return sb.toString(); | |
} | |
public static JSONObject connect(String url) | |
{ | |
HttpClient httpclient = new DefaultHttpClient(); | |
// Prepare a request object | |
HttpGet httpget = new HttpGet(url); | |
// Execute the request | |
HttpResponse response; | |
try { | |
response = httpclient.execute(httpget); | |
// Get hold of the response entity | |
HttpEntity entity = response.getEntity(); | |
if (entity != null) { | |
// A Simple JSON Response Read | |
InputStream instream = entity.getContent(); | |
String result= convertStreamToString(instream); | |
// A Simple JSONObject Creation | |
JSONObject json=new JSONObject(result); | |
// Closing the input stream will trigger connection release | |
instream.close(); | |
return json; | |
} | |
} catch (ClientProtocolException e) { | |
// TODO Auto-generated catch block | |
e.printStackTrace(); | |
} catch (IOException e) { | |
// TODO Auto-generated catch block | |
e.printStackTrace(); | |
} catch (JSONException e) { | |
// TODO Auto-generated catch block | |
e.printStackTrace(); | |
} | |
return null; | |
} | |
@Override | |
public void onPreExecute() { | |
progressDialog = new ProgressDialog(curContext); | |
progressDialog.setMessage("Loading..Please wait.."); | |
progressDialog.setCancelable(false); | |
progressDialog.setIndeterminate(true); | |
progressDialog.show(); | |
} | |
@Override | |
protected JSONObject doInBackground(String... urls) { | |
return connect(urls[0]); | |
} | |
@Override | |
protected void onPostExecute(JSONObject json ) { | |
getJSONListener.onRemoteCallComplete(json); | |
progressDialog.dismiss(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
this is a solution that I found online after a bit of searching. If i knew who the author was I would give appropriate credit. I'm just putting it here so it will be easier to find later if needed.