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

姓名:怕嶙觯康 ?學(xué)號(hào):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ì)的時(shí)候需要考慮三方面的問題

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

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

【嵌牛正文】:

【通信協(xié)議】

其實(shí)很簡單, 最常見的方法就是利用Http協(xié)議拂酣, 服務(wù)器端對(duì)外提供Http的接口秋冰;客戶端向服務(wù)器發(fā)出GET, POST請(qǐng)求, 調(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。

絕對(duì)是又臟又累的活商蕴,還很容易出錯(cuò)叠萍。

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

【 接口協(xié)議】

主要包括三個(gè)部分

(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, ?這個(gè)API用起來有一口氣寫到底的感覺, 讀起來很舒服树瞭。

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

【 會(huì)話管理】

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

session 一般有個(gè)過期時(shí)間,例如30分鐘据悔, 超過這個(gè)時(shí)間如果瀏覽器不再訪問的話传透, 這個(gè)session 就過時(shí)了, 需要重新登錄极颓。

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

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

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

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

換句話說吁津,手機(jī)端應(yīng)用由于操作的特性授艰, 需要保持一個(gè)長會(huì)話(3天胶哲, 7天纲岭。。)怜瞒, 傳統(tǒng)的session機(jī)制不合適父泳。

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

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

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

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

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

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市觉渴,隨后出現(xiàn)的幾起案子介劫,更是在濱河造成了極大的恐慌,老刑警劉巖案淋,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件座韵,死亡現(xiàn)場離奇詭異,居然都是意外死亡踢京,警方通過查閱死者的電腦和手機(jī)誉碴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瓣距,“玉大人黔帕,你說我怎么就攤上這事〉竿瑁” “怎么了成黄?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長逻杖。 經(jīng)常有香客問我奋岁,道長,這世上最難降的妖魔是什么荸百? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任厦取,我火速辦了婚禮,結(jié)果婚禮上管搪,老公的妹妹穿的比我還像新娘虾攻。我一直安慰自己,他們只是感情好更鲁,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布霎箍。 她就那樣靜靜地躺著,像睡著了一般澡为。 火紅的嫁衣襯著肌膚如雪漂坏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天媒至,我揣著相機(jī)與錄音顶别,去河邊找鬼。 笑死拒啰,一個(gè)胖子當(dāng)著我的面吹牛驯绎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谋旦,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼剩失,長吁一口氣:“原來是場噩夢啊……” “哼屈尼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拴孤,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤脾歧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后演熟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鞭执,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年芒粹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了兄纺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡是辕,死狀恐怖囤热,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情获三,我是刑警寧澤旁蔼,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站疙教,受9級(jí)特大地震影響棺聊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜贞谓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一限佩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧裸弦,春花似錦祟同、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至窖贤,卻和暖如春砖顷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赃梧。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國打工滤蝠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人授嘀。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓物咳,卻偏偏與公主長得像,于是被迫代替她去往敵國和親粤攒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子所森,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

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

  • 點(diǎn)擊查看原文 Web SDK 開發(fā)手冊(cè) SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個(gè)完善的 IM 系統(tǒng)...
    layjoy閱讀 13,760評(píng)論 0 15
  • 從三月份找實(shí)習(xí)到現(xiàn)在囱持,面了一些公司夯接,掛了不少焕济,但最終還是拿到小米、百度盔几、阿里晴弃、京東、新浪逊拍、CVTE上鞠、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,243評(píng)論 11 349
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)芯丧,斷路器芍阎,智...
    卡卡羅2017閱讀 134,654評(píng)論 18 139
  • 轉(zhuǎn)自 :http://blog.csdn.net/taoff/articles/1921009.aspx 一、術(shù)語...
    stone_yao閱讀 6,179評(píng)論 0 31
  • 當(dāng)美式古典遇上懷舊老家具缨恒,會(huì)有什么樣的火花呢谴咸? 業(yè)主喜愛收藏古董,期待能擁有古典的優(yōu)雅質(zhì)感骗露,看似南轅北轍的元素整合...
    熟勞棒竟硬輝閱讀 250評(píng)論 0 0