У меня есть скрипт php, в рамках которого я проверяю количество неоплаченных билетов, принадлежащих пользователю. Когда я вызываю скрипт в веб-браузере и передаю ему идентификатор пользователя, я получаю ожидаемый ответ, например -> ["unpaid_tickets","5","success"]
.
Однако, когда я вызываю тот же скрипт из приложения Android через volley
библиотеки StringRequest
или JsonArrayRequest
Я продолжаю получать ноль для значения количества билетов, несмотря на использование одного и того же идентификатора пользователя. ответ -> ["unpaid_tickets","0","success"]
.
Как я могу исправить эту проблему? Я попытался добавить параметр в функцию json_encode()
, например JSON_NUMERIC_CHECK
, но безрезультатно. Любая помощь будет оценена.
PHP скрипт:
$userid = $_GET['userid'];
$conn = mysqli_connect("localhost",$username,$password,$database) or die('Cannot connect to database');
$sql = "SELECT COUNT(*) AS unpaid_tickets FROM tbl_tickets WHERE userid ='$userid' AND pay_status ='reserved'";
$result = mysqli_query($conn,$sql) or die('Cannot execute query: '.mysqli_error($conn));
if($result){
$row=mysqli_fetch_row($result);
$tickets = $row[0];
echo json_encode(array('unpaid_tickets',$tickets,'success'));
// echo $tickets;
}else{
echo json_encode(array('unpaid_tickets','0-0'));
}
Код Android:
JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, AppController.getInstance().getURL(AppConst.TAG_URL_CHECK_UNPAID_TICKETS).equals("") ? AppConst.URL_CHECK_UNPAID_TICKETS : AppController.getInstance().getURL(AppConst.TAG_URL_CHECK_UNPAID_TICKETS), null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.i(TAG,"user id -> "+AppController.getInstance().getPrefManager().getUserId());
Log.w(TAG,"ticket check response -> "+response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG,"processUnpaidTicket() volley -> "+error.toString());
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> params = new HashMap<>();
params.put(AppConst.TAG_USER_ID, AppController.getInstance().getPrefManager().getUserId());//add user id to request
return params;
}
};