我正在尝试构建一个脚本,该脚本通过将POST数据发送到PHP脚本来从内部SQLite数据库读取数据并将其传输到外部MySQL数据库。
下面的代码应遍历SQLite数据库中的每个记录,将POST数据发送到PHP脚本,如果传输成功,则删除该记录。但是,相反,我从PHP脚本中收到一条错误消息,提示密钥丢失。当我在$ _POST超全局变量上执行var_dump时,我得到一个空数组,提示应用程序的参数未正确发送,我也不知道为什么。
这些代码实际上是从我构建的另一个应用程序中直接复制的,该应用程序执行了相同的操作,但是使用的是不同的数据集,并且数据发送没有问题。
这是我的代码:
while (data.moveToNext()) {
final String id = data.getString(0);
final String name = data.getString(1);
final String company = data.getString(2);
final String phone = data.getString(3);
final String email = data.getString(4);
final String load = data.getString(5);
final String autonomy = data.getString(6);
final String last = data.getString(7);
final String saving = data.getString(8);
final String range = data.getString(9);
final String weight = data.getString(10);
final String volume = data.getString(11);
// Load the string request
StringRequest stringRequest = new StringRequest(Request.Method.POST, serverUrl,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if (response.equals("success")) {
dbHelper.deleteRecord(id);
}
else Toast.makeText(SendDataActivity.this, response, Toast.LENGTH_SHORT).show();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(SendDataActivity.this, "An unknown error occurred. Some records may not be transferred.", Toast.LENGTH_SHORT).show();
error.printStackTrace();
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("key","***");
params.put("name", name);
params.put("company", company);
params.put("phone", phone);
params.put("email", email);
params.put("load", load);
params.put("autonomy", autonomy);
params.put("last", last);
params.put("saving", saving);
params.put("range", range);
params.put("weight", weight);
params.put("volume", volume);
return params;
}
};
RequestHandler.getInstance(SendDataActivity.this).addToRequestQueue(stringRequest);
}
加载网页没有问题,因为它得到了PHP的响应。所有最终字符串中的数据都是正确的,因为当我在它们上执行System.out.println时,我在控制台中看到了数据。因此,它已将数据正确加载到变量中,但是由于PHP脚本未接收到POST数据,因此该数据在某处丢失。我的其他应用程序完美运行,这使我更加沮丧,这只是同一应用程序的重复版本和重构版本。