My Android App does http posts to URLs like http://example.com/abc.php?email=abc@xyz.com So the Android App basically talks to PHPs on the server side and receives JSON response
As Kaj said in the comment, one option is to catch the exception, and perhaps retry or post a failure message.
For response codes != 200, just read them an do your job inside an if (con.getResponseCode() == 200)
block
Another alternative option, is to use the much nicer Apache classes:
http://developer.android.com/reference/org/apache/http/package-summary.html
For a snippet, check BalusC's tutorial here in SO: Using java.net.URLConnection to fire and handle HTTP requests
Adding to the very good suggestions so far...
My work associate taught me to use classes from the org.apache.http package like this:
String result = null;
HttpGet request = new HttpGet(some_uri);
// As Jeff Sharkey does in the android-sky example,
// use request.setHeader to optionally set the User-Agent header.
HttpParams httpParams = new BasicHttpParams();
int some_reasonable_timeout = (int) (30 * DateUtils.SECOND_IN_MILLIS);
HttpConnectionParams.setConnectionTimeout(httpParams, some_reasonable_timeout);
HttpConnectionParams.setSoTimeout(httpParams, some_reasonable_timeout);
HttpClient client = new DefaultHttpClient(httpParams);
try
{
HttpResponse response = client.execute(request);
StatusLine status = response.getStatusLine();
if (status.getStatusCode() == HttpStatus.SC_OK)
{
ResponseHandler<String> responseHandler = new BasicResponseHandler();
result = responseHandler.handleResponse(response);
}
else
{
// Do something else, if wanted.
}
}
catch (ClientProtocolException e)
{
Log.e(LOG_TAG, "HTTP Error", e);
// Do something else, if wanted.
}
catch (IOException e)
{
Log.e(LOG_TAG, "Connection Error", e);
// Do something else, if wanted.
}
finally
{
client.getConnectionManager().shutdown();
}
// Further parse result, which may well be JSON.
You should also make sure you're not doing lengthy tasks like HTTP requests in the UI thread.