我有一个新项目涉及为远足俱乐部的网站构建Android应用程序。该网站具有登录功能,之后用户可以浏览可用的远足,订阅远足,查看其他订阅者,联系组织者等。 原始站点基于MySQL数据库,前端为.asp页面。大多数数据作为查询字符串上的GET参数传递给页面。
Android开发的新手,即使在阅读了几个教程之后,有些事情也让我很困惑。我正在考虑建立一个关于REST Web服务的架构,但是有一些障碍需要克服并选择制作。
除了使用REST之外,还有其他一些选项:
从应用程序调用原始的.asp页面,而不是构建专用的Web服务。这使得我编写的代码少得多,可以使用原始业务逻辑(查询e.a.)以及登录系统(具有基于cookie的“记住我”功能)。缺点是需要解析响应中的(X)HTML代码以在应用GUI中显示,其中大部分响应代码是无用的镇流器代码。此外,从架构的角度来看,它感觉不太好。
使用基于SOAP的Web服务。我对SOAP完全不熟悉,对于移动设备来说,它似乎太重了。
使用REST服务。我倾向于这个选择,并且做了 一些已使用SLIM框架的工作服务。但那里 是一些问题。首先,根据定义,REST是无状态的 似乎不支持会话。但是“记住我”选项是 第一次登录后,应用程序所需的用户 除非他明确注销,否则不需要再次登录。
但我们怎样才能做到这一点?
第一个选项是设计一些完全客户端站点登录/注销系统,该系统在本地保存凭据,直到用户注销。并将每个请求的凭据作为POST参数发送到Web服务,或者以某种方式在HTTP Authorization请求标头中发送,但我并不熟悉。
第二个选项是偏离RESt原则并且无论如何都使用会话机制。将凭据发送到Web服务后,将创建cookie并将其发送到客户端应用程序。 dartabase无法扩展,因此无法在用户表中保存令牌。也许用户/密码可以加密并作为cookie发送到应用程序,并在每次后续请求时解密?
我在这方面有点迷失,期待着认真的建议!
答案 0 :(得分:2)
我相信从长远来看,您倾向于使用REST接口。虽然JSoup和/或WebView方法肯定会起作用,但重要的是能够以与服务器端完全无关的方式重新定义/设计移动应用程序。 REST将帮助您,每次更改HTML页面时都不需要使用服务器端等。
如果您的路线图包含此内容,那么即将推出REST还将有助于编写其他移动应用程序,甚至可以在iOS等不同平台上使用。
答案 1 :(得分:0)
您可以使用jsoup解析Android应用中的html页面并重新组织网页信息,此选项将使您能够快速开发应用程序,以后您可以考虑添加REST接口您的网站并在json中填充数据。 如果您不想解析html页面,也可以使用WebView来填充网页。
答案 2 :(得分:0)
我建议你使用REST架构。您可以将Android的休息客户端库用作RESTDroid,请查看指南,因为有一个实现示例,其中包含所使用的特定Web服务所需的特殊标头(在本例中为Parse.com)。