jsonObjectRequest错误消息为null

时间:2015-11-30 04:22:33

标签: php android mysql xampp

所以我正在研究一个从xampp服务器上的MySQL数据库中检索数据的android应用程序。这是android main的代码,

Button scanButton = (Button) findViewById(R.id.scanButton);
String findUrl = "http://myIPaddress/webservice/findItem.php";
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
scanButton.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v){

        JsonObjectRequest jsonObjectrequest = new JsonObjectRequest(Request.Method.POST, 
        findUrl, new Response.Listener<JSONObject>(){
            @Override
            public void onResponse(JSONObject response){
                try{
                    //retrieve the items table from the database
                    JSONArray items = response.getJSONArray("items");
                    int i = 2;
                    //retrieve the 3rd row in the table
                    JSONObject item = items.getJSONObject(i);
                    String name = item.getString("name");
                    //send a LogCat message containing the name of the row                  
                    Log.d("name",name); 
                } catch(JSONException e){
                    e.printStackTrace();
                }

            }
        }, new Response.ErrorListener(){
            @Override
            public void onErrorResponse(VolleyError error){
                //in case of an error, send a logcat message containing the error
                Log.d("error","" + error.getMessage());
            }
        });
        requestQueue.add(jsonObjectrequest);
    }
});

}

php脚本位于webservice文件夹中,该文件夹位于xampp文件夹的htdocs文件夹中。这是connection.php的脚本(声明并设置数据库的连接),

<?php

define('hostname', 'localhost');
define('user','root');
define('password','');
define('databaseName','webservice');

$connect = mysqli_connect(hostname, user, password, databaseName);

?>

和findItem.php的脚本(从&#34; webservice&#34;我本地主机phpmyadmin中的数据库中返回&#34; items&#34;表),

<?php

if($_SERVER["REQUEST_METHOD"]=="POST"){
    include 'connection.php';
    showItem();
}

function showItem(){
    global $connect;

    $query = "Select * FROM ITEMS";

    $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("items"=>$temp_array));
    mysqli_close($connect);
}

?>

我遇到的错误发生在运行时。当我单击我的android模拟器中的按钮时,logcat消息不是来自&#34; items&#34;的第3行的名称。表。有一条错误消息,但错误最终为null。我的问题基本上是可能造成这种情况的原因?我已经确定php脚本位于正确的位置(xampp / htdocs / webservice),ip地址是正确的,apache和mysql的xampp服务器是打开的,正确的权限是在android清单文件中写的, &#34;项目&#34;在名为&#34; webservice&#34;的数据库中存在至少3行的表。如有任何意见,请提前感谢。

1 个答案:

答案 0 :(得分:1)

所以虽然我没有收到任何关于这个问题的答案,但我能够弄清楚出了什么问题。首先,我使用postman应用程序(谷歌浏览器扩展程序)检查数据库是否存在,因为我在php脚本中使用了post方法。事实上数据库确实存在。因此,尽管我在问题中的假设不正确,但问题很可能是ip地址。我最初在findUrl字符串中的ip地址是正确的,但仍然是错误的。它是一个有效的IP地址,但数据库位于本地托管的服务器上;因此,IP地址应该是本地IP地址。出于某种原因,我使用的IP地址不是本地的,所以这就是修复。如果有人想知道我是如何在Windows上找到本地IP地址的,只需运行命令提示符并输入“ipconfig”。本地IP地址应为“ipv4 address”。