手機(jī)端應(yīng)用怎么訪問服務(wù)器?

姓名:????學(xué)號:17101223416

轉(zhuǎn)載自:https://mp.weixin.qq.com/s?__biz=MzAxOTc0NzExNg==&mid=407211054&idx=1&sn=ef7e3518a8c26e40abd90332048e0888&scene=38#wechat_redirect

【嵌牛導(dǎo)讀】:現(xiàn)在的手機(jī)端應(yīng)用,不管是iOS還是Android, 不聯(lián)網(wǎng)的幾乎寥寥無幾。那手機(jī)的的應(yīng)用怎么調(diào)用服務(wù)器提供的接口,來實(shí)現(xiàn)業(yè)務(wù)功能呢? ? 在設(shè)計(jì)的時候需要考慮三方面的問題

【嵌牛鼻子】:通信協(xié)議、接口協(xié)議、會話管理

【嵌牛提問】:手機(jī)端是怎么訪問網(wǎng)絡(luò)的呢?

【嵌牛正文】:

【通信協(xié)議】

其實(shí)很簡單, 最常見的方法就是利用Http協(xié)議, 服務(wù)器端對外提供Http的接口;客戶端向服務(wù)器發(fā)出GET, POST請求, 調(diào)用接口,從服務(wù)器的響應(yīng)中獲取數(shù)據(jù)。

當(dāng)然寫Http底層的代碼也很累, 你得把數(shù)據(jù)組織成Http協(xié)議的header ,body ,通過網(wǎng)絡(luò)發(fā)送出去。

還得解析服務(wù)器的響應(yīng), response code (像200, 500 ), response body 等;

如果要遇到發(fā)送文件,還得支持MultiPart。

絕對是又臟又累的活,還很容易出錯。

還好現(xiàn)在不少開源的代碼已經(jīng)替你把這些臟活累活已經(jīng)干了,可以直接使用, 例如大名鼎鼎HttpClient , 使用這些代碼你完全不用考慮Http實(shí)現(xiàn)的細(xì)節(jié), 只需要知道服務(wù)器端接口的協(xié)議即可。

【 接口協(xié)議】

主要包括三個部分

(1) 接口的url : ? ?例如https://www.mybank.com/interface/login

(2) 是GET 還是 POST ??

(3) 參數(shù) , 例如 username=xxxx , password=xxxx

(4) 響應(yīng)的數(shù)據(jù) ?, 可以是xml , 也可以是json , ?json 現(xiàn)在的使用比較廣泛。

知道了這些東西, 可以輕松的寫一段HttpClient 代碼來調(diào)用了, 下面的代碼就是通過Post的方式來向服務(wù)器端發(fā)送用戶名和密碼, 做登錄操作

Request.Post("https://www.mybank.com/interface/login")

.bodyForm(Form.form().add("username",??"vip").add("password",??"secret").build())

.execute().returnContent();

注意上面的代碼用了HttpClient 的Fluent API, ?這個API用起來有一口氣寫到底的感覺, 讀起來很舒服。

這里能找到Fluent API的細(xì)節(jié), 這里再強(qiáng)調(diào)一下, 開源軟件自帶的例子和教程是非常好的學(xué)習(xí)資料, 網(wǎng)上很多的文章其實(shí)就是對這些東西的破碎的翻譯,最好是練好英文, 閱讀最權(quán)威的,原汁原味的資料。

【 會話管理】

我們知道,用戶通過瀏覽器登錄網(wǎng)站以后, ?服務(wù)器可以產(chǎn)生session (會話), 這個session 通常會以cookie的方式(在Http協(xié)議的Header 中)發(fā)送給瀏覽器, 瀏覽器需要保存起來, 再次訪問網(wǎng)站的時候, 會把cookie帶過去, 這樣服務(wù)器就知道用戶是誰了。

session 一般有個過期時間,例如30分鐘, 超過這個時間如果瀏覽器不再訪問的話, 這個session 就過時了, 需要重新登錄。

手機(jī)端應(yīng)用當(dāng)然也可以模擬瀏覽器, 以同樣的方式處理, ?登錄以后,就把服務(wù)器發(fā)的session ID 保存起來, 下次訪問其他接口時把這個session 發(fā)過去就可以了。

但是你仔細(xì)想一下,手機(jī)和瀏覽器是不一樣的: 手機(jī)端經(jīng)常是登錄以后, 可以長時間不操作(例如7天), session 也不會過期。

很多手機(jī)端應(yīng)用可以保持很長時間的會話狀態(tài), 例如7天以內(nèi)不操作都不會過期, 7天以后才會要求重新登錄。

這樣服務(wù)器針對瀏覽器搞的Cookie 超時時間 30分鐘就太短了。

換句話說,手機(jī)端應(yīng)用由于操作的特性, 需要保持一個長會話(3天, 7天。。), 傳統(tǒng)的session機(jī)制不合適。

這時候需要我們自己來設(shè)計(jì)實(shí)現(xiàn)一個會話的管理機(jī)制:

1. 手機(jī)端應(yīng)用調(diào)用服務(wù)器端的登錄接口。

2. 服務(wù)器生成一個token , token 可以通過算法設(shè)計(jì)成一個隨機(jī)的字符串, 讓黑客無法猜出。 服務(wù)器把token 放到緩存或者數(shù)據(jù)庫中, 設(shè)置一個過期時間,例如7天

3. 服務(wù)器把token 發(fā)回給手機(jī)端

4. 手機(jī)端保存該token , ?每次訪問其他接口的時候需要把token 也發(fā)到服務(wù)器端做認(rèn)證, 如果服務(wù)器端發(fā)現(xiàn)token 過期, 就會要求手機(jī)端重新登錄

這樣就實(shí)現(xiàn)了一個長時間的會話管理。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,565評論 6 539
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,115評論 3 423
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,577評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,514評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,234評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,621評論 1 326
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,641評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,822評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,380評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,128評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,319評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,879評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,548評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,970評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,229評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,048評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,285評論 2 376

推薦閱讀更多精彩內(nèi)容