我正在创建一个类,它应该使用具有特定参数的凌空发送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
表:
答案 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();
}
}
}
然后当然将您的请求添加到请求队列。