我有一個涉及爲徒步旅行俱樂部網站構建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