2016-04-15 122 views
0

我在这一行错误:java.lang.String类型的Android的数据库不能转换到JSONObject的

JSONObject jsonResponse = new JSONObject(response); 

这一点我认为这对PHP文件错误。但我无法弄清楚我的PHP代码中有什么问题。

<?php 
    require "init.php"; 
    require "password.php"; 

    $username = $_POST["username"]; 
    $password = $_POST["password"]; 

    $statement = mysqli_prepare($con, "SELECT * FROM User WHERE username = ?"); 
    mysqli_stmt_bind_param($statement, "s", $username); 
    mysqli_stmt_execute($statement); 
    mysqli_stmt_store_result($statement); 
    mysqli_stmt_bind_result($statement, $colNo, $colUsername, $colPassword, $colName, $colHpno, $colUser_state); 

    $response = array(); 
    $response["success"] = false; 

    while(mysqli_stmt_fetch($statement)) { 
     if (password_verify($password, $colPassword)) { 
      $response["success"] = true; 
      $response["username"] = $colUsername; 
      $response["name"] = $colName; 
      $response["hpno"] = $colHpno; 
     } 
    }; 

    echo json_encode($response); 
?> 

有人告诉我,我得到了错误的顺序为mysqli_stmt_bind_result,但我已按照数据库表中的顺序。

logcat的:

04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err: org.json.JSONException: Value <br><h3>Database of type java.lang.String cannot be converted to JSONObject 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at org.json.JSON.typeMismatch(JSON.java:111) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at org.json.JSONObject.<init>(JSONObject.java:160) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at org.json.JSONObject.<init>(JSONObject.java:173) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at wqyap762.rprqs.LoginActivity$3.onResponse(LoginActivity.java:91) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at wqyap762.rprqs.LoginActivity$3.onResponse(LoginActivity.java:86) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:60) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at android.os.Handler.handleCallback(Handler.java:739) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:95) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at android.os.Looper.loop(Looper.java:135) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:5254) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at java.lang.reflect.Method.invoke(Native Method) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at java.lang.reflect.Method.invoke(Method.java:372) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
+0

粘贴JSON文本。 – drulabs

回答

0

你可以尝试使用一些东西一样:

new JSONObject("{your string}") 

,如果它仍然是抛出一个异常,那么它可能可以,问题是在服务器端的响应。

在浏览器中检查服务器的响应,如果没问题,检查父对象是什么。也就是说,如果是这样,

[ 
    { 
    "success":true, 
    "username":"data", 
    "name":"name", 
    "hpno":"hpno" 
    } 
] 

那么这里第一个元素是数组“[”,在这种情况下,你应该下面的代码,

JSONArray array = new JSONArray(response); 
for(int i=0;i<array.length;i++){ 
    JSONObject obj = array.getJSONObject(i); 
} 
+0

我发现了这个错误。它在init.php中,我回应了一些东西。我删除它后,它就可以工作。 –

相关问题