2016-11-12 4 views
0

Я разрабатываю приложение для Android и теперь выполняю действия пользователя «CreateAccount» и «Login». Я могу вставить информацию пользователя в базу данных, но я не могу получить информацию о пользователе из базы данных, чтобы выполнить вход. Это мой Java-код:Ошибка запроса объекта JSON в приложении для Android

String showUrl = "http://192.168.0.11/webapps/showUser.php"; 
public void searchLoginInfo(View view) { 
    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST,showUrl,null, new Response.Listener<JSONObject>() 
     { 
     @Override 
     public void onResponse(JSONObject response) { 
      try { 
       JSONArray users = response.getJSONArray("users"); 
       for (int i = 0; i < users.length(); i++) { 
        JSONObject user = users.getJSONObject(i); 
        String username = user.getString("username").toLowerCase(); 
        String password = user.getString("password").toLowerCase(); 
        String retypedPassword = user.getString("retypedpassword").toLowerCase(); 
        String email = user.getString("passphrase").toLowerCase(); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    }, new Response.ErrorListener() 
     { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      Log.e(TAG, "onErrorResponse: ERORR!!!!!!!!!!!"); 
      Log.e(TAG, "onErrorResponse: ERORR!!!!!!!!!!!"+error.toString()); 
     } 
    }); 
    requestQueue.add(jsonObjectRequest); 
} 

ошибка, что я получаю: E/MyActivity: onErrorResponse: Erorr !!!!!!!!!!! E/MyActivity: onErrorResponse: ERORR !!!!!!!!!!! com.android.volley.ParseError: org.json.JSONException: Value Подключение типа java.lang.String не может быть преобразовано в JSONObject. Это мой showUser.php сценарий:

<?php 
if($_SERVER["REQUEST_METHOD"]=="POST"){ 
include 'connection.php'; 
showUser(); 
} 
function showUser(){ 
global $connect; 
$query="SELECT* FROM user;"; 
$result=mysqli_query($connect,$query); 
$number_of_rows=mysqli_num_rows($result); 
$temp_array=array(); 
if($number_of_rows>0){ 
    while($row=mysqli_fetch_assoc($result)){ 
     $temp_array[]=$row; 
    } 
} 
header('Content-Type:application/json'); 
echo json_encode(array("users"=>$temp_array)); 
mysqli_close($connect); 
} 
?> 

Из того, что у меня есть красный в Интернете не может быть проблемой с комплектовкой ?! Моя таблица сортировки и столбцы - utfmb4_general_ci, а моя сопоставление соединений с сервером - utfmb4_unicode_ci PrintScreen

Я также использовал POSTMAN, чтобы увидеть фактический ответ с сервера, и это выглядит хорошо для меня.

{ 
    "users": [ 
{ 
    "username": "charlie", 
    "password": "harris", 
    "retypedpassword": "harris", 
    "email": "[email protected]" 
}, 
{ 
    "username": "tomas", 
    "password": "kovtun", 
    "retypedpassword": "kovtun", 
    "email": "[email protected]" 
} 
] 
} 

Эта проблема действительно убивает меня, ребята, поэтому любая помощь будет оценена! Спасибо!

ответ

0

Используйте это:

public void searchLoginInfo(View view) { 
StringRequest stringRequest = new StringRequest(Request.Method.POST,showUrl, new Response.Listener<String>() 
    { 
    @Override 
    public void onResponse(String response) { 
     try { 
      response = response.replaceAll("[^\\p{ASCII}]", ""); 
      JSONObject jsonObject = new JSONObject(response); 
      JSONArray users = jsonObject.getJSONArray("users"); 
      for (int i = 0; i < users.length(); i++) { 
       JSONObject user = users.getJSONObject(i); 
       String username = user.getString("username").toLowerCase(); 
       String password = user.getString("password").toLowerCase(); 
       String retypedPassword = user.getString("retypedpassword").toLowerCase(); 
       String email = user.getString("passphrase").toLowerCase(); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 
}, new Response.ErrorListener() 
    { 
    @Override 
    public void onErrorResponse(VolleyError error) { 
     Log.e(TAG, "onErrorResponse: ERORR!!!!!!!!!!!"); 
     Log.e(TAG, "onErrorResponse: ERORR!!!!!!!!!!!"+error.toString()); 
    } 
}); 
requestQueue.add(stringRequest); 
} 
+0

теперь она дает эту ошибку: W/System.err: org.json.JSONException: Значение соединения типа java.lang.String не может быть преобразован в JSONObject. Похоже, что он больше не вызывает onErrorListener. @Androidjack – Roberto

+0

Я использовал журнал в методе onResponse, и это значение «response»: E/MyActivity: onResponseError: Connection successfull {"users": [{"username": "charlie", "password": " Харрис " "retypedpassword": "Харрис", "электронная почта": "[email protected]"}, { "имя": "Tomas", "пароль": "Ковтун", "retypedpassword": "Ковтун"," email ":" [email protected] "}]} @Androidjack – Roberto

+0

Я обновил ответ, пожалуйста, проверьте его. –