JSONArrayRequest和PHP对不起作用

时间:2015-07-12 13:20:35

标签: java php android mysql

我正在创建一个类,它应该使用具有特定参数的凌空发送JSONArrayRequest,然后找到等于这些参数的mysql行并将其发回。我编写了简单的mysql函数,它接收POST参数和发送和接收JSONObjects的Java方法。但它没有工作,我一无所获。

这是名为details.php PHP 文件。它从我的Android应用程序接收参数并发回一个数组。

require_once __DIR__ . '/db_connect.php'
$db = new DB_CONNECT();
$path= $_POST["path"];

$result = mysql_query("SELECT * FROM modx_ms2_product_files WHERE path = $path") or die(mysql_error());

// check for empty result
if (mysql_num_rows($result) > 0) {
    // looping through all results
    // products node
    $json_response = array();

    while ($row = mysql_fetch_array($result)) {
        // temp user array
        $product = array();
        $product ["file"] = $row["file"];

        // push single product into final response array
        array_push($json_response, $product);
    }

    // echoing JSON response
    echo json_encode($json_response);

    $conn->close();
}

这是我的方法getArray(),它发送请求并收到回复:

 public void getarray() {
     String path = "1578/";
     final String URL = "http://myurl.io/details.php";
     HashMap<String, String> params = new HashMap<String, String>();
     params.put("path", path);

     JsonArrayRequest customarray = new JsonArrayRequest(Request.Method.POST,URL,new JSONObject(params),new Response.Listener<JSONArray>() {
         @Override
         public void onResponse(JSONArray response) {
             if (response.length() > 0) {
                 // Parsing json
                 for (int i = 0; i < response.length(); i++) {
                     try {
                         JSONObject Obj = response.getJSONObject(i);

                         pics pic = new pics();
                         pic.setFile(Obj.getString("file"));
                         Log.i("cmon", Obj.getString("file"));
                         pics.add(pic);
                     } catch (JSONException e) {
                         e.printStackTrace();
                     }
                 }
             }
         }    
     }, new Response.ErrorListener() {
         @Override
         public void onErrorResponse(VolleyError error) {

         }
     });
     AppController.getInstance().addToRequestQueue(customarray);
 }

这是我的modx_ms2_product_files表:

http://i.imgur.com/yl1f7Ze.png

http://i.imgur.com/9V6PrBU.png

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用StringRequest?出于某种原因,当我使用JsonArrayRequest时,我没有收到任何来自服务器的回复。如果您决定创建StringRequest,则可以将回复转换为JSONArray,如下所示:

StringRequest get = new StringRequest(Method.POST, URL, new Listener<String>() {

            @Override
            public void onResponse(String response) {
                try {
                    JSONArray myArray = new JSONArray(response);

                    for(int i = 0; i < myArray.length(); i++)
                    {
                        JSONObject jObj = myArray.getJSONObject(i);
                        // get your data here

                    }

                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }

然后当然将您的请求添加到请求队列。