使用Android Volley将各种数据类型从android发送到php

时间:2019-03-07 17:03:17

标签: php android android-volley

我有一个Android应用。我想将POST请求发送到一个php文件。参数由arrayList和Strings组成。我想做这样的事情:

private Map<String, String> params;

    public RequestPostBook(long id, ArrayList<String> bookNames, ArrayList<String> bookAuthors, ArrayList<String> subjects,
                           String date,Response.Listener<String> listener)
    {
        super(Method.POST, REGISTER_REQUEST_URL, listener, null);


        params = new HashMap<>();
        params.put("candidateId", id + "");
        params.put("bookName",bookNames);
        params.put("authorName",bookAuthors);
        params.put("subjectName",subjects);
        params.put("reqDate",date);
    }

    @Override
    public Map<String, String> getParams() {
        return params;
    }

由于Map为(String,String),这将产生错误。请帮助我完成操作。请更正此代码。预先感谢。

2 个答案:

答案 0 :(得分:1)

问题是您的Map<String,String>组成,而您正在传递ArrayList<String>。您应该执行类似bookNames.toString()的操作,然后发送String

或者您也可以按如下方式创建JSONArray

JSONArray types=new JSONArray(Arrays.asList.(bookNames));

然后执行types.toString()并且应该可以工作。

然后使用PHP对其进行解码,您应该使用json_decode函数

$array = json_decode($json);

答案 1 :(得分:1)

params是Map<String, String>,因此它只能将String作为值。 您正在尝试将ArrayList放入其中。 您可能想尝试的是

JSONArray bookNamesJSON = new JSONArray(Arrays.asList(bookNames));
JSONArray bookAuthorsJSON = new JSONArray(Arrays.asList(bookAuthors));
JSONArray subjectsJSON = new JSONArray(Arrays.asList(subjects));

然后将这些对象传递给params

params.put("bookName",bookNamesJSON.toString());
params.put("authorName",bookAuthorsJSON.toString());
params.put("subjectName",subjectsJSON.toString());