2016-08-10 3 views
0

nicht bekommen Ich versuche JSONObject von meinem PHP-Skript in Android zu bekommen. alles geht gut, aber wenn der Benutzer seinen Vor- oder Nachnamen mit Leerzeichen eingibt, ist die App übertrieben.Kann JsonObjectRequest mit Leerzeichen

exmple: JACK // its ok junior smith // zerquetschen

Das ist mein PHP-Skript:

<?php 
require('connection.php'); 

$phone = $_GET['phone']; 
$password = $_GET['password']; 

$sql = ("select * from Users where phone = '$phone' and password = '$password' "); 

$check = mysqli_fetch_array(mysqli_query($con,$sql)); 

if(isset($check)){ 
    $hasApartment = mysqli_query($con,$sql); 
    $row = mysqli_fetch_assoc($hasApartment); 
    $apartmentNumber = $row['apartmentNum']; 
     $firstName = $row['firstName']; 
     $lastName = $row['lastname']; 

     $image = $row['image']; 

    if($apartmentNumber > 0){ 
    echo '{"query_result":"SUCCESS", "apartmentNumber":' . $apartmentNumber.' , "firstName":' . trim($firstName) .' ,"lastName":' . trim($lastName).', "image":"' . $image.'"}'; 

     } 
else{ 
echo '{"query_result":"noAparetemet"}'; 
} 
} 
else{ 
    echo '{"query_result":"FAILURE"}'; 
} 

mysqli_close($con); 

?> 

Das ist mein android ist:

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, 
      new Response.Listener<JSONObject>() { 
       @Override 
       public void onResponse(final JSONObject response) { 

        try { 
         String query_result = response.getString("query_result"); 
         switch (query_result){ 
          case "SUCCESS": // user name and password exists and mathces and user associated with apartment 
           SharedPreferences.Editor editor = preferences.edit(); 
           RoomateModel roomateModel = new RoomateModel(response); 
           Gson gson = new Gson(); 
           String json = gson.toJson(roomateModel); 
           editor.putString("USER", json); 
           editor.commit(); 
           Intent intent = new Intent(LoginActivityScreen.this, HomeActivityScreen.class); 
           editor.putBoolean("loggedIn", true); 
           editor.apply(); 
           startActivity(intent); 
           break; 

          case "FAILURE": //user name or password are incorrect 
           loginLayout.setVisibility(View.VISIBLE); 
           logging.setVisibility(View.GONE); 
           Toast.makeText(getApplicationContext(), "", Toast.LENGTH_SHORT).show(); 
           break; 
          default: 
           break; 
         } 

         } catch (JSONException e) { //this exception is caught 
         e.printStackTrace(); 
         loginLayout.setVisibility(View.VISIBLE); 
         logging.setVisibility(View.GONE); 
         Log.e("e" , e.toString()+e.getMessage()); 
        } 
       } 
      }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      loginLayout.setVisibility(View.VISIBLE); 
      logging.setVisibility(View.GONE); 
      Log.e("e" , error.toString()+error.getMessage()); 
     } 

    }); 
    MySingleton.getInstance(context).addToRquestQueue(jsonObjectRequest); 
} 

Das ist mein Protokoll:

com.android.volley.ParseError: org.json.JSONException: Unterminated object at character 85 of 
{"query_result":"SUCCESS", "apartmentNumber":63 , "firstName":JACK¨ ,"lastName":junior smith, "image":"url.jpeg"} 

Antwort

1

Das Problem besteht darin, dass Anführungszeichen in Vorname und Nachname in Ihrer JSON-Antwort fehlen. Sie sollten

"lastName": "junior smith" 

statt

"lastName":junior smith 

Try

echo '{"query_result":"SUCCESS", "apartmentNumber":' . $apartmentNumber.' , "firstName":' . trim($firstName) .' ,"lastName":' . trim($lastName).', "image":"' . $image.'"}'; 

von

echo '{"query_result":"SUCCESS", "apartmentNumber":' . $apartmentNumber.' , "firstName":"' . trim($firstName) .'" ,"lastName":"' . trim($lastName).'", "image":"' . $image.'"}'; 
+0

dank zu ersetzen !! @fiddler –

+0

Gern geschehen. Fälschen Sie nicht, um die Antwort zu akzeptieren. – fiddler

Verwandte Themen