2016-07-27 17 views
0

Bitte schauen Sie sich meinen grundlegenden Android-Webserver Code an. Daten von Android-Smartphone sollten sollten auf einen Webserver gesendet werden, sollte Webserver Daten in der Datenbank setzen und dann der Abfrage geben: { „query_result“: „SUCCESS“}Webserver zu Android JSON Parsing Daten

(wenn ich Zugriff auf den Server-Skript über den Browser Ich bekomme diese JSON-Nachricht, auch die Daten werden in die Datenbank eingefügt)

Das Problem ist, dass meine App die JSON-Antwort nicht korrekt analysiert oder überhaupt keine Antwort erhält?

Mein Code so weit: http://bits.works/view/466210bb

Der Code zeigt "JSON-Daten Fehler beim Analysieren" auf Android-Bildschirm.

Call of method: 

//Toast.makeText(getApplicationContext(), "Your Location is - \nLat: " + latitude + "\nLong: " + longitude, Toast.LENGTH_LONG).show(); 

new SignupActivity(AndroidGPSTrackingActivity.this).execute(Double.toString(latitude), Double.toString(latitude), Double.toString(longitude), Double.toString(longitude), Double.toString(latitude)); 

Klasse mit Methode:

public class SignupActivity extends AsyncTask<String, Void, String> { 

private Context context; 

public SignupActivity(Context context) { 
    this.context = context; 
} 

protected void onPreExecute() { 

} 

@Override 
protected String doInBackground(String... arg0) { 
    String fullName = arg0[0]; 
    String userName = arg0[1]; 
    String passWord = arg0[2]; 
    String phoneNumber = arg0[3]; 
    String emailAddress = arg0[4]; 

    String link; 
    String data; 
    BufferedReader bufferedReader; 
    String result; 

    try { 
     data = "?fullname=" + URLEncoder.encode(fullName, "UTF-8"); 
     data += "&username=" + URLEncoder.encode(userName, "UTF-8"); 
     data += "&password=" + URLEncoder.encode(passWord, "UTF-8"); 
     data += "&phonenumber=" + URLEncoder.encode(phoneNumber, "UTF-8"); 
     data += "&emailaddress=" + URLEncoder.encode(emailAddress, "UTF-8"); 

     link = "http://qqqqqtech/signup.php" + data; 
     URL url = new URL(link); 
     HttpURLConnection con = (HttpURLConnection) url.openConnection(); 

     bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream())); 
     result = bufferedReader.readLine(); 
     return result; 
    } catch (Exception e) { 
     return new String("Exception: " + e.getMessage()); 
    } 
} 

@Override 
protected void onPostExecute(String result) { 
    String jsonStr = result; 
    if (jsonStr != null) { 
     try { 
      JSONObject jsonObj = new JSONObject(jsonStr); 
      String query_result = jsonObj.getString("query_result"); 

      if (query_result.equals("SUCCESS")) { 
       Toast.makeText(context, "Data inserted.", Toast.LENGTH_SHORT).show(); 
      } else if (query_result.equals("FAILURE")) { 
       Toast.makeText(context, "Data could not be inserted.", Toast.LENGTH_SHORT).show(); 
      } else { 
       Toast.makeText(context, "Couldn't connect to remote database.", Toast.LENGTH_SHORT).show(); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
      Toast.makeText(context, "Error parsing JSON data.", Toast.LENGTH_SHORT).show(); 
     } 
    } else { 
     Toast.makeText(context, "Couldn't get any JSON data.", Toast.LENGTH_SHORT).show(); 
    } 
} 

}

+0

Sie sollten Ihren Code hier veröffentlichen. –

Antwort

0

Überprüfen Sie den Rückgabewert von doInBackground vor der Zeile

String query_result = jsonObj.getString("query_result"); 

Dies liegt daran, doInBackground eine Ausnahme gefangen haben könnte und zurück das anstelle einer gültigen Antwort. Also, machen Sie eine Toast mit jsonStr, bevor Sie versuchen, es zu analysieren, um zu sehen, was es enthält.

+0

geschützter void onPostExecute (String result) { String jsonStr = Ergebnis; Toast.makeText (Kontext, jsonStr, Toast.LENGTH_SHORT) .show(); if (jsonStr! = Null) {... Es scheint, dass jsonStr leer ist. – AndreasK