使用Volley将数据列表发送到服务器

时间:2016-06-22 07:50:01

标签: php android android-volley

我需要使用volley将数据列表传递给服务器并使用PHP访问该数据。从android应用程序我需要传递一个表中的所有数据并访问服务器上的数据。您可以将其视为购物车中服务器的传递数据。

我可以从数据库中获取数据作为列表。我需要将数据提交给服务器并访问它。

RequestQueue queue = Volley.newRequestQueue(getApplicationContext());
StringRequest request = new StringRequest(Request.Method.POST, NetworkHandler.ORDER, new Response.Listener<String>() {
    @Override
    public void onResponse(String response) {
        try{
            Log.d(LogMessages.ORDER_CONFIRM,response.toString());
        }
        catch(Exception ex){
            Toast.makeText(getApplicationContext(), ex.toString(), Toast.LENGTH_SHORT).show();
        }
    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        Toast.makeText(getApplicationContext(), error.toString(), Toast.LENGTH_SHORT).show();
    }
}) {
    @Override
    protected Map<String, String> getParams() throws AuthFailureError {
        List<Food> listCart = db.getAllCartItems();
        Map<String, String> parameters = new HashMap<String, String>();
        parameters.put("orderitems",listCart .toString());
        return parameters;
    }
};
request.setRetryPolicy(new DefaultRetryPolicy(DefaultRetryPolicy.DEFAULT_TIMEOUT_MS * 2, DefaultRetryPolicy.DEFAULT_MAX_RETRIES*2, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
queue.add(request);

3 个答案:

答案 0 :(得分:2)

如果您要将变量长度数据列表发送到服务器,通常我会这样做: 1.发送“count”参数以指示记录的数量 2.将“record_1”,“record_2”....参数发送到服务器

在服务器端,你应首先检查“count”,然后从1到你刚刚得到的计数检查“recored_#”。

答案 1 :(得分:2)

您可以使用json格式将多个数据发送到服务器并使用gson转换为json数组

Gson gson = new GsonBuilder().create();
JsonArray myCustomArray = gson.toJsonTree(listCart ).getAsJsonArray();

答案 2 :(得分:1)

我找到了解决方案。我用了GSON库。这是解决方案。

List<Food> listCart = db.getAllCartItems();
                             Gson gson = new Gson();
                             String data = gson.toJson(listCart);
                             Log.d(LogMessages.ORDER_CONFIRM,data);
                             Map<String, String> parameters = new HashMap<String, String>();
                             parameters.put("orderitems",data);

在PHP方面,我使用$ _POST [&#39; orderitems&#39;]获取订单项,并使用json_decode解码该数据。然后我可以访问每个对象。