通过服务器在安卓应用程序之间交换数据

Posted

技术标签:

【中文标题】通过服务器在安卓应用程序之间交换数据【英文标题】:Exchanging data between android apps through a server 【发布时间】:2013-07-31 01:40:01 【问题描述】:

出于学习目的,我正在制作一个必须与服务器交换数据的 android 应用 现在,我熟悉 Android 编程,所以这不是问题。问题是我从未设置过服务器并通过该服务器与应用程序交换数据。

以下是要求:

    通过应用将数据从一台设备发送到另一台设备。 数据交换将在 LAMP 服务器的帮助下完成。这些设备将在服务器上注册,即他们将拥有自己的“帐户”。 设备 1 将数据发送到服务器,服务器将其推送到设备 2,设备 2 也将拥有该应用程序。

以下是我目前想到的:

    创建应用程序 设置 LAMP 服务器 App 以 XML 格式从设备 1 向服务器发送所需数据 服务器接受 XML 并解析它(使用 DOM 或者可能是 SAX)。 XML 将包含它必须将该 XML 文件转发到的设备(设备 2)的详细信息。 将 XML 数据转发到设备 2。

问题:

    我的方法正确吗?请指导我,因为我从来没有这样做过。我最接近的经验是使用名为Parse 的网络服务。 设置 LAMP 服务器是否足够?我不这么认为。我想我必须在服务器上创建一个应用程序来接受 XML 文件,解析它并转发它。此外,服务器需要能够在其上保存所有设备信息。 我应该使用哪种语言创建此应用程序? PHP? 是否有我可以实现的 API/程序来实现该功能? 我假设我必须使用 HTTPClient 来实现我的目标,对吗? 在我的情况下,我还需要了解/实施什么?

如果有人能回答我的问题,我将非常感激。我在这方面完全是新手。谢谢你:)

【问题讨论】:

【参考方案1】:

我的方法正确吗?

您的想法是对的,但是您更可能希望通过 POST 或 GET 请求而不是 XML 将数据传递到您的服务器。您可以通过这些方法传递值和数组,并且不需要使用 xpath 或类似的东西来解析 XML。

将数据返回到移动设备,您可以使用 XML,但 JSON 目前是 API 的首选格式。

我应该用什么语言创建这个应用程序

php 是一种合适的语言,其他可能的语言包括 ruby​​ on rails、asp.net、python 等(有很多选择)。

是否有我可以实现的 API/程序来实现该功能?

使用所用语言的核心库,接收 GET/POST 请求并将数据传输到数据库/平面文件应该相当简单。

我假设我必须使用 HTTPClient 来实现我的目标,对吗?

是的

在我的情况下,我还需要了解/实施什么?

决定您将如何存储数据服务器端,如果您使用数据库,则需要设置它并对 SQL 进行一些研究,如果您无法访问 SQL 服务器,您有SQLITE 的选项(数据库存储在可移植文件中)或使用平面文件。

【讨论】:

谢谢!但是使用 mysql 而不是 SQLite 不是更好吗?因为,SQLite 不支持多用户账户(设备);在我的情况下,需要多个用户帐户。 您的服务器只能通过 1 个用户帐户访问数据库。在数据库中,您有表格等,将用户记录链接到他们的提交。听起来您应该在开始之前研究(关系)数据库如何表示数据。 我知道关系数据库,但是,我肯定会调查它 :) 非常感谢您的帮助。如果没有更好的答案,我会选择你的答案正确。【参考方案2】:

既然这是一个 android 问题,为什么不简单地使用 app engine 创建一个 appengine connected android (ACA)? https://developers.google.com/eclipse/docs/endpoints-androidconnected-gae

您也可以使用易于实现的 GCM http://developer.android.com/google/gcm/index.html(因为默认的 ACA 项目已预先实现)

【讨论】:

正如我所提到的,我这样做是出于学习目的,因此不想使用可以完成我大部分工作的 Web 服务。

以上是关于通过服务器在安卓应用程序之间交换数据的主要内容,如果未能解决你的问题,请参考以下文章

安卓 ContentProvider

Android Developer -- Bluetooth篇 概述

如何在 Linux 中的进程之间交换二进制数据

性能通过 TCP 套接字客户端-服务器应用程序发送/接收数据

一个 Python 和 JavaScript 交换数据的库

一个 Python 和 JavaScript 交换数据的库