2016-11-06 140 views
0

我正在使用json对象请求从我创建的数据库中获取信息。我能够与我的Android应用程序插入数据到数据库,但现在我想检查例如用户是否创建了一个用户帐户。 当我尝试创建json对象请求时,出现语法错误。这是一个问题,但我不明白什么似乎是问题。 url和php文件都可以正常工作。JSON对象请求

String showUrl = "http://192.168.0.16/webapps/showUser.php"; 
public void searchLoginInfo(View view) { 
    JsonObjectRequest jsonObjectRequest = new /*HERE IS WHERE I GET THE ERROR*/ JsonObjectRequest(Request.Method.POST,showUrl,(String)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"); 
        String password = user.getString("password"); 
        if (username.equals(myLoginList.get(0)) && password.equals(myLoginList.get(1))) { 
         Toast.makeText(LoginActivity.this, "Login Succesfull", Toast.LENGTH_LONG).show(); 
         Intent send = new Intent(LoginActivity.this, WelcomeActivity.class); 
         startActivity(send); 
         break; 
        }else{ 
         Toast.makeText(LoginActivity.this, "Login Failed!", Toast.LENGTH_LONG).show(); 
         Intent send = new Intent(LoginActivity.this, LoginActivity.class); 
         startActivity(send); 
        } 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      Log.e("Volley Error", error.toString()); 
      NetworkResponse networkResponse = error.networkResponse; 
      if (networkResponse != null) { 
       Log.e("Status code", String.valueOf(networkResponse.statusCode)); 
      } 
     } 
    }); 
    requestQueue.add(jsonObjectRequest); 
} 

这是我的错误:错误:(60,98)错误:不兼容的类型:字符串不能转换到的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'); 
    json_encode(array("users"=>$temp_array)); 
    mysqli_close($connect); 
} 
?> 
+0

这将是更好,如果你发布错误 –

+0

@SarmadAijaz错误:(60,98)错误:不兼容的类型:字符串不能转换为JSONObject的 – Roberto

+0

什么你在'response'变量中获得的值? –

回答

0

只需卸下投给String。试试这个,

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, showUrl, null, 
    new Response.Listener<JSONObject>(){ 

     @Override 
     public void onResponse(JSONObject response) { 

     } 
    } 
); 

错误说服务器正在返回一个String输出。您可以使用StringRequest解决错误,

StringRequest stringRequest = new StringRequest(Request.Method.POST, showUrl, 
    new Response.Listener<String>() { 

     @Override 
     public void onResponse(String response) { 
      Log.e("response", response); 
     } 
    }, 
    new Response.ErrorListener() { 

     @Override 
     public void onErrorResponse(VolleyError error) { 

     } 
    } 
); 
+0

应用程序崩溃 – Roberto

+0

检查编辑并在问题中添加logcat输出 –

+0

不投射它不会给我错误不过,它似乎还没有达到onResponse方法 – Roberto