【问题标题】:Send various data types from android to php using android volley使用 android volley 将各种数据类型从 android 发送到 php
【发布时间】:2019-03-07 17:03:17
【问题描述】:

我有一个安卓应用。我想将 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;
    }

由于地图是(字符串,字符串),这会给出错误。请帮助我了解如何完成它。请更正此代码。提前致谢。

【问题讨论】:

  • 你遇到了什么错误?

标签: php android android-volley


【解决方案1】:

params 是一个Map&lt;String, String&gt;,所以它只能取String 作为值。 您正在尝试将ArrayLists 放入其中。 您可能想尝试的是

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

然后将这些对象传递给参数

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

【讨论】:

  • 感谢您的回答。如果我应用这个解决方案,那么我可以在 php 中使用类似的东西:$bookNames[]=$_POST["bookName"];
  • 你必须像这样解码 JSON:$bookNames = json_decode($_POST["bookName"]);
【解决方案2】:

问题是您的Map&lt;String,String&gt; 组成,而您传递的是ArrayList&lt;String&gt;。您应该执行bookNames.toString() 之类的操作,然后您将发送String

或者您也可以创建一个JSONArray,如下所示:

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

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

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

$array = json_decode($json);

【讨论】:

  • 感谢您的回答。如果我应用这个解决方案,那么我可以在 php 中使用类似的东西:$bookNames[]=$_POST["bookName"];
  • @ArnabBanerjee 这是另一个问题,你可以接受这个问题,它适用于 Android 端,然后为 PHP 创建另一个问题,然后你可以链接我这个问题,我会尝试更好地回答。
  • 这里是另一个问题的链接:stackoverflow.com/questions/55056910/…
  • 好的,但你必须先接受这个,我过几个小时再看看。
  • 很抱歉,但我必须将 Giorgio 的答案标记为正确。我知道您的两个答案都说同样的话,但他的答案格式更完善且易于理解。我希望没有难过的感觉。
猜你喜欢
  • 2015-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多