php - Android 如何从数组创建一个 json 并发送到 php 服务器

标签 php android json arraylist

我正在开发一个生成安装应用程序列表并创建 json 并将 json 发送到我的 php 服务器的应用程序。在 php 服务器上,我必须获取所有数据并相应地处理它。

这是生成已安装应用程序列表的代码:

List<PackageInfo> apps = getPackageManager().getInstalledPackages(PackageManager.GET_META_DATA);

    ArrayList<String[]> aux = new ArrayList();

    for (int i = 0; i < apps.size(); i++)
    {
        if (apps.get(i).versionCode != 0 && ((apps.get(i).applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 1))
        {
            String[] temp = new String[2];

            String name = apps.get(i).packageName;
            String versionName = apps.get(i).versionName;
            temp[0] = name;
            temp[1] = versionName;
            aux.add(temp);
        }
    }

这是将它以 json 形式发送到 php 服务器的代码:

try
        {
JSONObject obj = new JSONObject();
        obj.put("Applications", aux);
            URL url = new URL(IPClass.SERVERPath + "update.php");

            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setReadTimeout(15000);
            conn.setConnectTimeout(15000);
            conn.setRequestMethod("POST");
            conn.setDoInput(true);
            conn.setDoOutput(true);
            conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");

            OutputStream os = conn.getOutputStream();
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
            //OutputStreamWriter writer = new OutputStreamWriter(os);

            writer.write(String.valueOf(aux));
            writer.flush();
            writer.close();
            os.close();


            InputStream input = conn.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(input));
            StringBuilder result = new StringBuilder();
            String line;

            while ((line = reader.readLine()) != null) {
                result.append(line);
            }
            Log.d("doInBackground(Resp)", result.toString());

        }
        catch(Exception ex)
        {
            Log.d("Ex", ex.toString());
        }

问题是 json 没有正确生成,其次我如何在 php 服务器上获取它!

请帮忙! 谢谢

最佳答案

它会很好地工作。

JSONArray installedList = new JSONArray();
for (int i = 0; i < apps.size(); i++)
{
    if (apps.get(i).versionCode != 0 && ((apps.get(i).applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 1))
    {
        String name = apps.get(i).packageName;
        String versionName = apps.get(i).versionName;
        JSONObject installedPackage = new JSONObject();
        installedPackage.put("name", name);
        installedPackage.put("versionName", versionName);
        installedList.put(installedPackage);
    }
}
String dataToSend = installedList.toString();

添加此行不会神奇地将您的数组转换为 JSON 格式。

conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");

您必须创建 JSONArray 或 JSONObject。我建议您使用 JSONObject 创建 JSONArray。

关于php - Android 如何从数组创建一个 json 并发送到 php 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31668634/

相关文章:

javascript - 编辑如何在循环中获取 localStorage 的 json 值

php - 使用 PHP 启用 MySQL

Android MediaPlayer 错误 (1, -2147483648) CFContent MP4 视频

android - 处理大型 json 响应 - Android

android - 在 Android Studio 上为 android 构建 OutsystemsNow 出现 dexException

jquery - Ipstack 响应是 'undefined' 并且文档没有解释为什么?

用于节俭的 PHP 长整数

php - 保护 Cookie 和 session

php/mysql - 基于 user_level 重定向时的问题

c++ - 构造一个像 JSON 文件一样的字符串 C++