我有一个JSONArray,从Android本地SQLite数据库中检索,我想将其发送到MySQL数据库。 JSONArray结构如下
[
{
"value1": "1518518041",
"value2": "90.390342",
"value3": "23.7758309"
},
{
"value1": "1518518071",
"value2": "90.3903512",
"value3": "23.7758192"
},
{
"value1": "1518518200",
"value2": "90.390342",
"value3": "23.7758309"
},
....
]
现在我正在尝试使用Volley JsonArrayRequest
将数据发送到MySQL,这里是代码
JSONArray jsonArray = db.getResults();
RequestQueue queue = Volley.newRequestQueue(this);
JsonArrayRequest sendSqliteData = new JsonArrayRequest(Request.Method.POST, URL, jsonArray,
new Response.Listener<JSONArray>(){
@Override
public void onResponse(JSONArray jsonArray) {
Toast.makeText(this, "Success", Toast.LENGTH_LONG).show();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Toast.makeText(this, volleyError.getMessage().toString(), Toast.LENGTH_LONG).show();
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
HashMap<String, String> params = new HashMap<>();
try {
params.put("value1", jsonArray.getString("value1"));
params.put("value2", jsonArray.getString("value2"));
params.put("value3", jsonArray.getString("value3"));
} catch (JSONException e) {
e.printStackTrace();
}
return params;
}
};;
queue.add(sendSqliteData);
这是php脚本
<?php
// connect to database
$link = mysqli_connect($hostname, $username, $password);
mysqli_select_db($link, "myDatabase");
// get the JSONArray the app sends
$contents = file_get_contents('php://input');
$jsonArray = json_decode($contents, true);
$jsonCount = count($jsonArray);
for ($i = 0; $i < $jsonCount; $i++) {
$item = $jsonArray[$i];
$value1 = utf8_decode($item['value1']);
$value2 = utf8_decode($item['value2']);
$value3 = utf8_decode($item['value3']);
$query = "INSERT INTO dataTable VALUES('$value1', '$value2', '$value3')";
mysqli_query($link, $query);
}
我做错了什么?为什么数据不在MySQL表中写?
修改 我在Try / Catch块中遇到的问题。
@Override
protected Map<String, String> getParams() throws AuthFailureError {
HashMap<String, String> params = new HashMap<>();
try {
params.put("value1", jsonArray.getString("value1"));
params.put("value2", jsonArray.getString("value2"));
params.put("value3", jsonArray.getString("value3"));
} catch (JSONException e) {
e.printStackTrace();
}
return params;
}
在Try / Catch块中,我正在从jsonArray
检索String,而我正在请求齐射来制作JsonArray帖子。我的问题是我的数据已经在jsonArray
变量中,格式为给定的上JSON样本。如何使用PHP将JSON发送到服务器。我正在尝试使用此代码,但它无法正常工作。请建议我或编辑给定的代码以正确完成。