我正在尝试通过改造 api 后调用从我的 mysql 数据库获取 orderid。实际数据通过
arrOrderStatus.toString()
以 json 格式传入,但我无法使用 arrOrderStatus.get(i).getOrderid()
提取准确的值。在打印步骤 3(如下图所示)之后和打印步骤 4 之前,应用程序崩溃了。
我在哪里犯了愚蠢的错误?
主 Activity 中调用 retofit api 的函数:
private void fetchingOrderStatusData(String mobilenumber) {
Call<List<response_model_order_status>> call = apicontroller
.getInstance()
.getApi()
.getOrderStatus(mobilenumber);
call.enqueue(new Callback<List<response_model_order_status>>() {
@Override
public void onResponse(Call<List<response_model_order_status>> call, Response<List<response_model_order_status>> response) {
Log.d("AAAAAAAA", "Service is running..." + mobilenumber + "--1--");
List<response_model_order_status> arrOrderStatus = response.body();
Log.d("AAAAAAAA", "Service is running..." + mobilenumber + arrOrderStatus.toString() + "--2--");
for (int i = 0; i < arrOrderStatus.size(); i++) {
Log.d("AAAAAAAA", "Service is running..." + mobilenumber + "--3--");
Log.d("AAAAAAAA", "Service is running..." + arrOrderStatus.get(i).getOrderid() + "--4--");
}
}
@Override
public void onFailure(Call<List<response_model_order_status>> call, Throwable t) {
Log.d("AAAAAAAA", "Service is running..." + mobilenumber + "--5--");
}
});
}
apiset.java:
@FormUrlEncoded
@POST("get_order_status.php")
Call<List<response_model_order_status>> getOrderStatus(
@Field("mobilenumber") String mobilenumber
);
get_order_status.php代码:
<?php
require 'connection.php';
$mobilenumber=trim($_POST['mobilenumber']);
$qry="select X.orderid from orderlist X where X.mobilenumber='$mobilenumber' and X.ordertime >= CURDATE() order by X.ordertime DESC";
$raw=mysqli_query($con,$qry);
while ($res=mysqli_fetch_array($raw))
{
$data[]=$res;
}
print json_encode($data);
mysqli_commit($con);
mysqli_close($con);
?>
在mysql数据库中,orderlist表中的mobilenumber和orderid列都是varchar(20)。
响应模型:
public class response_model_order_status {
String orderid;
public response_model_order_status() {
}
public response_model_order_status(String orderid) {
this.orderid = orderid;
}
public String getOrderid() {
return orderid;
}
public void setOrderid(String orderid) {
this.orderid = orderid;
}
}
Log.d 输出和错误消息:
我尝试使用不同的语法代码来解析
arrOrderStatus.get(i).getOrderid()
,但无法这样做。