0

我有一个新项目,涉及为远足俱乐部的网站构建 Android 应用程序。该网站具有登录功能,之后用户可以浏览可用的徒步旅行、订阅徒步旅行、查看其他订阅者、联系组织者等。原始网站基于 MySQL 数据库,前端为 .asp 页面。大多数数据作为查询字符串上的 GET 参数通过页面传递。

刚接触 Android 开发,有些事情真的让我很困惑,即使在阅读了几篇教程之后。我正在考虑建立一个基于 REST Web 服务的架构,但是有几个障碍需要克服和选择。

除了使用 REST,还有一些其他选项可用:

  1. 从应用程序调用原始 .asp 页面,而不是构建专用的 Web 服务。这使我可以编写更少的代码,可以使用原始业务逻辑(查询 ea)以及登录系统(使用基于 cookie 的“记住我”功能)。缺点是响应中的 (X)HTML 代码需要解析以显示在应用程序 GUI 中,其中大部分响应代码是无用的镇流器代码。此外,从架构的角度来看,感觉也不是很好。

  2. 使用基于 SOAP 的 Web 服务。我对 SOAP 完全不熟悉,它对于移动设备来说似乎太重了。

  3. 使用 REST 服务。我倾向于这个选项,并且已经使用 SLIM 框架提供了一些已经工作的服务。但也有一些问题。首先,REST 根据定义是无状态的,似乎不支持会话。但是第一次登录后应用程序需要“记住我”选项,用户无需再次登录,除非他明确退出。

但是我们怎样才能做到这一点呢?

第一种选择是设计一些完全客户端站点登录/注销系统,该系统将凭据保存在本地,直到用户注销。并将每个请求的凭据作为 POST 参数发送到 Web 服务,或者以某种方式在 HTTP 授权请求标头中发送,尽管我对此并不熟悉。

第二种选择是稍微偏离 REST 原则并使用会话机制。将凭据发送到 Web 服务后,会创建一个 cookie 并将其发送到客户端应用程序。dartabase 无法扩展,因此无法在用户表中保存令牌。也许用户名/密码可以加密并作为 cookie 发送到应用程序,并在每个后续请求时解密?

我对此有点迷茫,期待认真的建议!

4

3 回答 3

2

我相信从长远的角度来看,向 REST 接口倾斜是很重要的。虽然 JSoup 和/或 WebView 方法肯定会起作用,但以完全不依赖于服务器端的方式灵活地重新定义/设计移动应用程序非常重要。REST 将在那里为您提供帮助,您无需在每次更改 HTML 页面等时赶上服务器端。

如果您的路线图包含,使用 REST 还将有助于将来编写其他移动应用程序,甚至在 iOS 等不同平台上。

于 2013-02-10T00:05:13.400 回答
0

您可以使用jsoup从您的 Android 应用程序中解析 html 页面并重新组织网页的信息,此选项将使您能够快速开发应用程序,稍后您可能会考虑将 REST 接口添加到您的网站并在其中填充数据json。如果您不想解析 html 页面,也可以使用 WebView 来加载您的网页。

于 2013-02-09T20:51:12.797 回答
0

我建议您使用 REST 架构,如您所说。您可以将 Android 的 REST 客户端库用作RESTDroid,请查看指南,因为有一个实现示例,其中包含使用的特定 Web 服务(本例中为 Parse.com)所需的特殊标头。

于 2013-02-14T08:58:00.250 回答