我有一个涉及为徒步旅行俱乐部网站构建Android应用程序的新项目。该网站具有登录功能,之后用户可以浏览可用的远足,订阅远足,查看其他订阅者,联系组织者等。 原始网站基于MySQL数据库,前端为.asp页面。大多数数据作为查询字符串上的GET参数传递给页面。使用Android应用程序扩展现有的Web应用程序
新的Android开发,有些东西真的让我困惑,即使阅读了几个教程。我正在考虑使用REST Web服务构建一个架构,但是有几个障碍需要克服和选择。
除了使用REST,其他一些选项:
呼叫从应用程序而不是建立一个专门的Web服务原来的.asp页。这为我留下了更少的代码来编写,原始的业务逻辑(查询e.a.)以及登录系统都可以使用(基于cookie的“记住我”功能)。缺点是响应中的(X)HTML代码需要解析以显示在应用程序GUI中,其中大部分响应代码都是无用的镇流器代码。另外,从档案的角度来看,它感觉不太好。
使用基于SOAP的web服务。我完全不熟悉SOAP,它对移动设备来说似乎太重量级了。
使用REST服务。我正在倾向于这个选项,并且已经使得一些已经使用SLIM框架的服务正在运行。但有 是一些问题。首先,REST根据定义是无状态的,并且 似乎不支持会话。但第一次登录后,应用程序需要“记住我”选项 ,除非明确注销,否则用户 不需要再次登录。
但是我们该怎么做到呢?
第一种选择是设计一些完全客户端站点登录/注销系统,它在本地保存凭证,直到用户注销。并将每个请求的凭证作为POST参数发送到Web服务,或者以某种方式在HTTP Authorization请求头中发送,尽管我对此并不熟悉。
第二种选择是偏离RESt原则,并使用会话机制。将凭据发送到Web服务后,会创建一个cookie并发送到客户端应用程序。 dartabase不能被扩展,所以没有选项可以在用户表中保存一个标记。也许用户名/密码可以加密并作为cookie发送到应用程序,并在每个后续请求中解密?
我有点迷失在这,期待认真的建议!
谢谢,我打算遵循这个策略。我通过将每个用户特定请求的用户名/密码凭证作为GET参数传递给数据提取操作来扩展Web服务。现在这种方法很有效,虽然它不是很安全。这留下了大多数业务规则必须重新编写的问题,因为这些现在隐藏在.asp页面后面。如果这些业务规则可以放在一个普通的地方,那将是非常好的,但是我认为现有的Web应用程序必须在这种情况下重写... – klausch 2013-02-10 00:26:24
旧的线程,但是您是否用建议的方法解决了这个问题?我正在做类似的事情,但是为了坚持ASP会议而与Google的Volley苦苦挣扎 – Jammo 2016-01-30 14:15:42