Hej
Jeg er igang med et projekt, hvor jeg har en masse accesspoints og deres placering i en database.
Dem vil jeg gerne kunne indlæse på en android. Jeg er ny til android, men har med succes lavet en app der kan uploade til databasen.
Til at lave forbindelsen til databasen er følgende php kode udviklet:
- <?php
- $con = mysql_connect("localhost","root","xxx");
- if(!$con)
- {
- echo 'Not connected';
- echo ' - ';
-
- }else
- {
- echo 'Connection Established';
- echo ' - ';
- }
-
- $db = mysql_select_db("android");
- if(!$db)
- {
- echo 'No database selected';
- }else
- {
- echo 'Database selected';
- }
- $sql = mysql_query("SELECT building,floor,lon,lat FROM ap_location WHERE bssid='$_REQUEST['bssid']'");
-
- while($row=mysql_fetch_assoc($sql))
- $output[]=$row;
- print(json_encode($output));
-
- mysql_close(); ?>
I aktiviteten kaldes metoden
- Object returnValue[] = Database.getData(bssid);
i Database.java filen som ser således ud:
- public class Database {
- public static Object[] getData(){
- String db_url = "http://xx.xx.xx.xx/getdata.php";
- InputStream is = null;
- String line = null;
- ArrayList<NameValuePair> request = new ArrayList<NameValuePair>();
- request.add(new BasicNameValuePair("bssid",bssid));
- Object returnValue[] = new Object[4];
- try
- {
- HttpClient httpclient = new DefaultHttpClient();
- HttpContext localContext = new BasicHttpContext();
- HttpPost httppost = new HttpPost(db_url);
- httppost.setEntity(new UrlEncodedFormEntity(request));
- HttpResponse response = httpclient.execute(httppost, localContext);
- HttpEntity entity = response.getEntity();
- is = entity.getContent();
- }catch(Exception e){
- Log.e("log_tag", "Error in http connection" +e.toString());
- }
- String result = "";
- try
- {
- BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
- StringBuilder sb = new StringBuilder();
-
- while ((line = reader.readLine()) != null) {
- sb.append(line + "\n");
- }
- is.close();
- result=sb.toString();
- }catch(Exception e){
- Log.e("log_tag", "Error in http connection" +e.toString());
- }
- try
- {
- JSONArray jArray = new JSONArray(result);
- JSONObject json_data = jArray.getJSONObject(0);
- returnValue[0] = (json_data.getString("building"));
- returnValue[1] = (json_data.getString("floor"));
- returnValue[2] = (json_data.getString("lon"));
- returnValue[3] = (json_data.getString("lat"));
-
- }catch(JSONException e){
- Log.e("log_tag", "Error parsing data" +e.toString());
- }
- return returnValue;
- }
Når jeg kører dette kan jeg i logcat se der er en fejl med parsing af json, der ser således ud.
12-22 02:24:35.276: E/log_tag(278): Error parsing dataorg.json.JSONException: Value Connection of type java.lang.String cannot be converted to JSONArray
Jeg har prøvet flere ting og fulgt guides, men det funker sku ikke lige.
Håber at der er nogen der forstår mit spørgsmål, skrevet halvt sovende, og i gider at hjælpe mig.
På forhånd tak for hjælpen.