【问题标题】:How to pass array from Android java app to PHP如何将数组从 Android java 应用程序传递到 PHP
【发布时间】:2023-02-11 10:08:32
【问题描述】:

我有接受数组作为参数的现有 PHP。这是当前从 javascript 调用的,javascript 数组被直接设置为通过 AJAX 调用发送到 php 的数据对象的一部分。

现在,我想从 Android 应用程序发送一个数组,我不想更改现有的 php 和 javascript。我一直在寻找答案,但没有看到任何东西,除了建议将数组编码为 JSON 并在 php 中对其进行解码,但这将需要在任何地方进行大量更改,包括 javascript。看来 javascript 和 php 可以正常工作。也许某些事情会自动对阵列完成?

PHP 看起来像这样:

foreach($_POST as $key => $value) {
  if (is_array($_POST[$key])){
     for ($index = 0; $index < count($_POST[$key]); $index++){
          if(ini_get('magic_quotes_gpc'))
            $_POST[$key][$index] = stripslashes($_POST[$key][$index]);

          $_POST[$key][$index] = htmlspecialchars(strip_tags($_POST[$key][$index]));
     }
  }
  else {
      if(ini_get('magic_quotes_gpc'))
        $_POST[$key] = stripslashes($_POST[$key]);

      $_POST[$key] = htmlspecialchars(strip_tags($_POST[$key]));
  }
}

所以,它肯定期望一些参数是数组。

javascript 目前是这样做的:

        $.ajax({
            type: "POST",
            url: 'php/getLibraryPatterns.php',
            dataType: 'json',
            data: data,

data 是一个 javascript 对象,其中包含数组。例如:

        var data = {};
        if (sortBy.length > 0){
            data.sortBy = sortBy;
        }

sortBy 是 javascript 中的一个数组。

如何将数组从 Android 应用程序传递到此 php?目前,我对 php 的其他调用的所有参数都只是简单的字符串,因此我使用以下函数将所有参数放在一个字符串中,然后将其写入我的 HttpURLConnection 的 OutputStream。我已经完成了所有工作,只是不确定如何处理数组?

    private String buildParameterString() throws UnsupportedEncodingException
    {
        if (m_parameterMap == null) return "";
        StringBuilder result = new StringBuilder();
        boolean first = true;

        Iterator<Map.Entry<String, String>> itr = m_parameterMap.entrySet().iterator();

        while(itr.hasNext())
        {
            Map.Entry<String, String> param = itr.next();
            if (first)
                first = false;
            else
                result.append("&");

            result.append(URLEncoder.encode(param.getKey(), "UTF-8"));
            result.append("=");
            result.append(URLEncoder.encode(param.getValue(), "UTF-8"));
        }
        return result.toString();
    }

我尝试用数据创建一个 JSONArray,然后转换为字符串并设置它,就像设置我发送的其他字符串一样。但是,这似乎不起作用,至少不会自动起作用。

所以,我在参数中发送类似“[29]”或“['sortAsc']”的字符串。
我得到了一个空列表。我将继续在 php 中调试以查看它们在那里的样子,但我希望它们只是字符串,而 php 不知道如何处理它。

那么,如何将数组发送到 php?我不想更改 php,因为这意味着 javascript 也必须更改。有什么办法可以从 java Android 应用程序做到这一点?

【问题讨论】:

    标签: php android arrays


    【解决方案1】:

    尝试这个:

    在 while 循环之外:

    JSONArray data = new JSONArray();
    

    并将其放入 while 循环中:

    JSONObject jsonObjSend = new JSONObject();
    jsonObjSend.put(param.getKey(), param.getValue());
    data.put(jsonObjSend);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-25
      • 2016-10-05
      • 2011-06-11
      • 1970-01-01
      • 2013-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多