[mysql]JSONArrayRequest 和 PHP 对不工作

标签: MySQL Java Android PHP
发布时间: 2016/10/24 5:03:38
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我创建了类,应发送 JSONArrayRequest 使用特定 params 凌空,然后找到 mysql 等于这些参数和发送回来的行。我写了简单 mysql 接收的函数 POST params 和 Java 方法发送和接收 JSONObjects 。但是它不工作,我没收到。

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

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:

你有试过使用 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();
                }
            }
        }

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

赞助商