How to receive and parse a JSON array

Situation:
You got some (client) application, that needs data from a mysql database.
The application cannot connect to the database itself. It sends a HTTP GET/POST request to a webserver, that gets the data out of the mysql database and packs it into a JSON Array. This JSON Array is sent back to the client.

The client receives the JSON Array and parses it.

This is the php code for the webserver (inspired from )

	
/**
 * download list of registered users from server at cmd.eyedbits.com
 * 
 * @return list of users
 */
static Vector<String> downloadUserList() {
  Log.i(TAG, String.format("Downloading UserList"));
  
  String serverUrl = SERVER_URL + SERVER_URL_QUERYUSERLIST;

  //TODO: implement multiple tries with exponential backoff if server is not responding		
  DefaultHttpClient hc = new DefaultHttpClient();
  ResponseHandler <String> res = new BasicResponseHandler();
  HttpGet getMethod = new HttpGet(serverUrl);

  Vector<String> retVector = new Vector<String>(); 
  try {
    String response = hc.execute(getMethod, res);
    Log.i(TAG, "Http response: " + response);
    // todo check if successfull and not error
    
    // parse string
    try {
      JSONArray jsonArray = new JSONArray(response);
      for (int i = 0; i < jsonArray.length(); ++i) {
        JSONObject row = jsonArray.getJSONObject(i);
        String userName = row.getString("UserName");
        retVector.add(userName);
      }
    } catch (JSONException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    
  } catch (ClientProtocolException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
  } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
  }
  
  return retVector;
}

How to expose data from a mysql database via php/JSON for access via HTTP

Situation:
You got some (client) application, that needs data from a mysql database.
The application cannot connect to the database itself. It sends a HTTP GET/POST request to a webserver, that gets the data out of the mysql database and packs it into a JSON Array. This JSON Array is sent back to the client.

(Follow up situation, the client has to request and parse the data)

What you need:

– mysql database
– webserver with php

This is the php code for the webserver (inspired from )

<?php
  // connect to Database
  // database specifications, adapt your configuration
  $dbUri = "...";
  $dbUser = "...";
  $dbPassword = "...";
  $dbDatabaseName = "...";

  // establish connection
  $db = mysql_connect($dbUri, $dbUser, $dbPassword) OR
        die(mysql_error());

  mysql_select_db($dbDatabaseName, $db) OR
        die(mysql_error());

  // example query, adapt to your needs
  $sqlquery = "SELECT ... FROM ... WHERE ... ORDER BY ... ASC;";
  
  $result = mysql_query($sqlquery) OR
        die(mysql_error());
  
  if (mysql_errno()) {
    header("HTTP/1.1 500 Internal Server Error");
  } else {
    $rows = array();
    // fill array
    while($r = mysql_fetch_assoc($result)) {
        $rows[] = $r;
    }
    // encode array as JSON and print it
    print json_encode($rows);
  }
?>