 <p>In your Android app, you expect a JSONArray:</p> <pre><code>// store incoming stream in an array JSONArray jArray = new JSONArray(streamToString(instream)); </code></pre> <p>However, in your PHP file you only output multiple separate JSON objects instead of a real array. I think, you should collect all items from the database in an PHP array first and then encode and output it only once.</p> <p>My PHP skills are a bit rusted, but I hope this one will work:</p> <pre><code>//store # of rows returned $num_rows = mysql_num_rows($query); if ($num_rows &gt;= 1) { $output = array(); while($results = mysql_fetch_assoc($query)) { // append row to output $output[] = results } mysql_close(); // shouldn't that be outside the if block? //encode the returned data in JSON format echo json_encode($output); } </code></pre> <p>I would expect the output then to be like this (maybe without indentation):</p> <pre><code>[ {"nid":"1","vid":"1","type":"goal","language":"","title":"test","uid":"1","status":"1","created":"1342894493","changed":"1342894493","comment":"2","promote":"1","moderate":"0","sticky":"1","tnid":"0","translate":"0"}, {"nid":"2","vid":"2","type":"goal","language":"","title":"test2","uid":"1","status":"1","created":"1342894529","changed":"1342894529","comment":"2","promote":"1","moderate":"0","sticky":"1","tnid":"0","translate":"0"}, {"nid":"5","vid":"5","type":"goal","language":"","title":"run","uid":"1","status":"1","created":"1343506987","changed":"1343506987","comment":"2","promote":"1","moderate":"0","sticky":"1","tnid":"0","translate":"0"}, {"nid":"9","vid":"9","type":"goal","language":"","title":"run to the hills","uid":"1","status":"1","created":"1343604338","changed":"1343605100","comment":"2","promote":"0","moderate":"0","sticky":"0","tnid":"0","translate":"0"} ] </code></pre>