本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體而言,涉及一種http請(qǐng)求處理的方法、服務(wù)器及客戶端。
背景技術(shù):
http(hypertexttransferprotocol,超文本傳輸協(xié)議)是一種分布式、合作式、多媒體信息系統(tǒng)服務(wù)、面向應(yīng)用層的協(xié)議。版本http/1.1產(chǎn)生于90年代,已經(jīng)對(duì)于現(xiàn)代web應(yīng)用的性能產(chǎn)生負(fù)面影響。http2通過定義一個(gè)優(yōu)化的基礎(chǔ)連接的http語義映射來解決這些問題。自1996年http1.0定稿到2015年6月推薦標(biāo)準(zhǔn)draft-ietf-httpbis-http2-13(http/2),http的處理能力不斷提高,能夠多樣化地滿足客戶端對(duì)于從服務(wù)器取得資源的需求。
http客戶端可要求服務(wù)器完成檢索(quiry)、查找(search),前端更新(front-endupdate)和注解(annotation)這些功能。這些功能通過方法get(獲取),head(隱藏),post(發(fā)布),put(放入),delete(刪除),connect(連接),options(執(zhí)行)等方法實(shí)現(xiàn)對(duì)于服務(wù)器的數(shù)據(jù)的獲取。
除了http,現(xiàn)有技術(shù)中,從服務(wù)器獲取數(shù)據(jù)的方式還有telnet(遠(yuǎn)程終端協(xié)議)這樣的遠(yuǎn)程登錄。適用于局域網(wǎng)的dbus(自由軟件項(xiàng)目),可以調(diào)用局域網(wǎng)上其它主機(jī)上的應(yīng)用程序,為互聯(lián)網(wǎng)設(shè)計(jì)的alljoyn(自由軟件項(xiàng)目)簡(jiǎn)單說法就是internet上的dbus。
在實(shí)現(xiàn)本發(fā)明的過程中,申請(qǐng)人發(fā)現(xiàn),由于每個(gè)服務(wù)器上都有大量的應(yīng)用程序,特別是帶有數(shù)據(jù)庫的服務(wù)器,有大量的處理數(shù)據(jù)的程序,現(xiàn)有技術(shù)中的http方法,只能夠直接從服務(wù)器上得到數(shù)據(jù),而不能夠利用服務(wù)器上的應(yīng)用程序獲取數(shù)據(jù)。
另一方面,其他從服務(wù)器獲取數(shù)據(jù)的方式,如telnet,不能支持復(fù)雜的數(shù)據(jù)類型,dbus和alljoyn過于接近程序設(shè)計(jì)語言,忽視了http客戶端已經(jīng)形成的以多媒體應(yīng)用為代表的人機(jī)交互資產(chǎn),這些資產(chǎn)對(duì)增強(qiáng)現(xiàn)實(shí)、虛擬現(xiàn)實(shí)、人工智能是很重要的。
因此,需要一種新的用于http請(qǐng)求處理的方法、服務(wù)器及客戶端。
在所述背景技術(shù)部分公開的上述信息僅用于加強(qiáng)對(duì)本發(fā)明的背景的理解,因此它可以包括不構(gòu)成對(duì)本領(lǐng)域普通技術(shù)人員已知的現(xiàn)有技術(shù)的信息。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明提供一種用于要求http服務(wù)方進(jìn)行數(shù)據(jù)處理的方法、裝置及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),能夠利用http請(qǐng)求中包含調(diào)用invoke方法調(diào)用服務(wù)器上的應(yīng)用程序而獲得數(shù)據(jù)。
本發(fā)明的其他特性和優(yōu)點(diǎn)將通過下面的詳細(xì)描述變得顯然,或部分地通過本發(fā)明的實(shí)踐而習(xí)得。
根據(jù)本發(fā)明的第一方面,提供一種http請(qǐng)求處理的方法,其中,所述方法包括:接收客戶端發(fā)起的http請(qǐng)求,所述http請(qǐng)求中包含調(diào)用invoke方法;根據(jù)所述invoke方法,調(diào)用應(yīng)用程序?qū)λ鰄ttp請(qǐng)求進(jìn)行處理,獲取http響應(yīng)消息;將所述http響應(yīng)消息發(fā)送所述客戶端。
根據(jù)一些實(shí)施例,所述http請(qǐng)求的請(qǐng)求行中包括所述invoke方法,所述http請(qǐng)求的頭域中包括invoking頭域,所述http請(qǐng)求的體中包括所述應(yīng)用程序的輸入?yún)?shù)。
根據(jù)一些實(shí)施例,根據(jù)所述invoke方法,調(diào)用應(yīng)用程序?qū)λ鰄ttp請(qǐng)求進(jìn)行處理,獲取http響應(yīng)消息,包括:從所述http請(qǐng)求的頭域中獲取所述輸入?yún)?shù)的編碼類型;根據(jù)所述編碼類型解碼所述http請(qǐng)求的體,得到解碼后的輸入?yún)?shù);根據(jù)所述invoke方法,調(diào)用應(yīng)用程序,以使所述應(yīng)用程序根據(jù)所述輸入?yún)?shù)對(duì)所述http請(qǐng)求進(jìn)行處理,獲取輸出參數(shù);根據(jù)所述輸出參數(shù),生成http響應(yīng)消息。
根據(jù)一些實(shí)施例,根據(jù)所述invoke方法,調(diào)用應(yīng)用程序,以使所述應(yīng)用程序根據(jù)所述輸入?yún)?shù)對(duì)所述http請(qǐng)求進(jìn)行處理,獲取輸出參數(shù),包括:從所述http請(qǐng)求的請(qǐng)求行、invoking頭域和host頭域中獲取統(tǒng)一資源標(biāo)示符uri;根據(jù)所述uri調(diào)用應(yīng)用程序,以使所述應(yīng)用程序根據(jù)解碼后的輸入?yún)?shù),對(duì)所述http請(qǐng)求進(jìn)行處理,獲取輸出參數(shù)。
根據(jù)一些實(shí)施例,所述根據(jù)所述輸出參數(shù),生成http響應(yīng)消息,包括:對(duì)所述輸出參數(shù)進(jìn)行編碼,根據(jù)編碼后的輸出參數(shù)生成http響應(yīng)消息的體,將對(duì)所述輸出參數(shù)進(jìn)行編碼的編碼類型生成http響應(yīng)消息的頭域。
根據(jù)本發(fā)明的第二方面,提供一種http請(qǐng)求處理的方法,其中,所述方法包括:向服務(wù)器發(fā)送http請(qǐng)求,所述http請(qǐng)求中包含調(diào)用invoke方法;接收所述服務(wù)器發(fā)送的http響應(yīng)消息。
根據(jù)一些實(shí)施例,所述http請(qǐng)求的請(qǐng)求行中包括所述invoke方法,所述http請(qǐng)求的頭域中包括invoking頭域,所述http請(qǐng)求的體中包括應(yīng)用程序的輸入?yún)?shù)。
根據(jù)一些實(shí)施例,所述方法還包括:對(duì)所述應(yīng)用程序的輸入?yún)?shù)進(jìn)行編碼,根據(jù)編碼后的輸入?yún)?shù)生成所述http請(qǐng)求的體,根據(jù)對(duì)所述輸入?yún)?shù)進(jìn)行編碼的編碼類型生成所述http請(qǐng)求的頭域。
根據(jù)本發(fā)明的第三方面,提供一種http請(qǐng)求處理的服務(wù)器,其中,所述服務(wù)器包括:接收模塊,用于接收客戶端發(fā)起的http請(qǐng)求,所述http請(qǐng)求中包含調(diào)用invoke方法;獲取模塊,用于根據(jù)所述invoke方法,調(diào)用應(yīng)用程序?qū)λ鰄ttp請(qǐng)求進(jìn)行處理,獲取http響應(yīng)消息;發(fā)送模塊,用于將所述http響應(yīng)消息發(fā)送所述客戶端。
根據(jù)本發(fā)明的第三方面,提供一種http請(qǐng)求處理的客戶端,其中,所述客戶端包括:發(fā)送模塊,用于向服務(wù)器發(fā)送http請(qǐng)求,所述http請(qǐng)求中包含調(diào)用invoke方法;接收模塊,用于接收所述服務(wù)器發(fā)送的http響應(yīng)消息。
本發(fā)明實(shí)施例中,通過接收客戶端發(fā)起的http請(qǐng)求,所述http請(qǐng)求中包含調(diào)用invoke方法;根據(jù)所述invoke方法,調(diào)用應(yīng)用程序?qū)λ鰄ttp請(qǐng)求進(jìn)行處理,獲取http響應(yīng)消息;將所述http響應(yīng)消息發(fā)送所述客戶端。實(shí)現(xiàn)了客戶端調(diào)用服務(wù)器上的應(yīng)用程序獲得數(shù)據(jù),客戶端可以不需要自己去下載安裝應(yīng)用程序也不需要下載數(shù)據(jù),一方面,擴(kuò)大了客戶端的潛力,增大了服務(wù)方與客戶端軟件的融合,減少了對(duì)網(wǎng)絡(luò)流量和客戶端的內(nèi)存的占用,另一方面,實(shí)現(xiàn)了服務(wù)器對(duì)客戶端的統(tǒng)一管理,有利于為客戶端構(gòu)建一個(gè)安全可靠的網(wǎng)絡(luò)環(huán)境。
附圖說明
通過參照附圖詳細(xì)描述其示例實(shí)施例,本發(fā)明的上述和其它目標(biāo)、特征及優(yōu)點(diǎn)將變得更加顯而易見。
圖1是根據(jù)一示例性實(shí)施例示出的一種http請(qǐng)求處理的方法的流程圖。
圖2是根據(jù)一示例性實(shí)施例示出的另一種http請(qǐng)求處理的方法的流程圖。
圖3是根據(jù)一示例性實(shí)施例示出的一種http請(qǐng)求處理的服務(wù)器的結(jié)構(gòu)圖。
圖4是根據(jù)一示例性實(shí)施例示出的一種http請(qǐng)求處理的客戶端的結(jié)構(gòu)圖。
具體實(shí)施方式
現(xiàn)在將參考附圖更全面地描述示例實(shí)施例。然而,示例實(shí)施例能夠以多種形式實(shí)施,且不應(yīng)被理解為限于在此闡述的實(shí)施例;相反,提供這些實(shí)施例使得本發(fā)明將全面和完整,并將示例實(shí)施例的構(gòu)思全面地傳達(dá)給本領(lǐng)域的技術(shù)人員。在圖中相同的附圖標(biāo)記表示相同或類似的部分,因而將省略對(duì)它們的重復(fù)描述。
此外,所描述的特征、結(jié)構(gòu)或特性可以以任何合適的方式結(jié)合在一個(gè)或更多實(shí)施例中。在下面的描述中,提供許多具體細(xì)節(jié)從而給出對(duì)本發(fā)明的實(shí)施例的充分理解。然而,本領(lǐng)域技術(shù)人員將意識(shí)到,可以實(shí)踐本發(fā)明的技術(shù)方案而沒有特定細(xì)節(jié)中的一個(gè)或更多,或者可以采用其它的方法、組元、裝置、步驟等。在其它情況下,不詳細(xì)示出或描述公知方法、裝置、實(shí)現(xiàn)或者操作以避免模糊本發(fā)明的各方面。
附圖中所示的方框圖僅僅是功能實(shí)體,不一定必須與物理上獨(dú)立的實(shí)體相對(duì)應(yīng)。即,可以采用軟件形式來實(shí)現(xiàn)這些功能實(shí)體,或在一個(gè)或多個(gè)硬件模塊或集成電路中實(shí)現(xiàn)這些功能實(shí)體,或在不同網(wǎng)絡(luò)和/或處理器裝置和/或微控制器裝置中實(shí)現(xiàn)這些功能實(shí)體。
附圖中所示的流程圖僅是示例性說明,不是必須包括所有的內(nèi)容和操作/步驟,也不是必須按所描述的順序執(zhí)行。例如,有的操作/步驟還可以分解,而有的操作/步驟可以合并或部分合并,因此實(shí)際執(zhí)行的順序有可能根據(jù)實(shí)際情況改變。
下面結(jié)合具體的實(shí)施例,分別對(duì)服務(wù)器側(cè)和客戶端側(cè)的http請(qǐng)求處理方法進(jìn)行詳細(xì)的說明。
實(shí)施例一
圖1是根據(jù)一示例性實(shí)施例示出的一種http請(qǐng)求處理的方法的流程圖。需要說明的是,該實(shí)施例以服務(wù)器側(cè)為執(zhí)行主體對(duì)http請(qǐng)求處理的方法進(jìn)行說明。
如圖1所示,該方法包括:
在s110中,接收客戶端發(fā)起的http請(qǐng)求,該http請(qǐng)求中包含invoke方法。
需要說明的是,為了實(shí)現(xiàn)客戶端和服務(wù)器之間的數(shù)據(jù)交互,首先應(yīng)該建立服務(wù)器與客戶端之間的連接。http是一個(gè)應(yīng)用層的協(xié)議,是假定連接和傳輸都沒有問題時(shí)雙方交換消息的協(xié)議。例如,為了實(shí)現(xiàn)網(wǎng)絡(luò)信息傳輸,服務(wù)器啟動(dòng)一個(gè)線程,等待客戶端發(fā)起的連接,服務(wù)器接收到客戶端發(fā)起的連接后,對(duì)該客戶端進(jìn)行認(rèn)證,如果認(rèn)證通過,則建立與該客戶端的連接。需要注意的是,服務(wù)器也可以與多個(gè)客戶端之間建立連接,從而可以同時(shí)處理多個(gè)客戶端發(fā)起的http請(qǐng)求,提高h(yuǎn)ttp請(qǐng)求處理的效率。
需要說明的是,現(xiàn)有技術(shù)中的http請(qǐng)求不包含invoke方法。本發(fā)明實(shí)施例中http請(qǐng)求的請(qǐng)求行中包括所述invoke方法,所述http請(qǐng)求的頭域中包括invoking頭域,所述http請(qǐng)求的體中包括所述應(yīng)用程序的輸入?yún)?shù),其中,根據(jù)該invoking頭域與請(qǐng)求行中的requesturl、host頭域可以確定服務(wù)器調(diào)用的應(yīng)用程序的統(tǒng)一資源標(biāo)示符uri。
該http請(qǐng)求的頭域中還可以包括內(nèi)容編碼content-encoding頭域,從該content-encoding頭域中可以獲取到上述輸入?yún)?shù)的編碼類型,例如,asn.1(adstractsyntaxnotationdotone,抽象語法標(biāo)記)的編碼類型可作為content-encoding頭域的參數(shù),客戶端在http請(qǐng)求的體寫入運(yùn)行應(yīng)用程序時(shí)需要的輸入?yún)?shù)的asn.1編碼,服務(wù)器根據(jù)content-encoding頭域中的輸入?yún)?shù)的編碼類型可用于該asn.1編碼的解碼,從而得到解碼后的輸入?yún)?shù)。
需要說明的是,使用其它方法的http請(qǐng)求與http響應(yīng)消息都應(yīng)遵從http1.1協(xié)議,其最新版“語法及路由”2014年6月定義于rfc7230,最新版“語義和內(nèi)容”2014年6月定義于rfc7231。2015年6月推薦標(biāo)準(zhǔn)draft-ietf-httpbis-http2-13(http/2)推薦了http消息的一個(gè)高效傳輸方法,但是沒有改變http請(qǐng)求方法的語法和語義。因此,本申請(qǐng)中定義的invoke方法需要注冊(cè)(rfc7230section8.4)。
在s120中,根據(jù)上述invoke方法,調(diào)用應(yīng)用程序?qū)υ揾ttp請(qǐng)求進(jìn)行處理,獲取http響應(yīng)消息。
根據(jù)示例實(shí)施例,可以從該http請(qǐng)求的content-encoding頭域中獲取所述輸入?yún)?shù)的asn.1編碼類型,并根據(jù)該asn.1編碼類型對(duì)該http請(qǐng)求的體中的輸入?yún)?shù)進(jìn)行解碼,得到解碼后的輸入?yún)?shù)。
需要說明的是,asn.1支持的編碼類型有若干種,如ber(basicencodingrules,基本編碼規(guī)則),cer(canonicalencodingrules,規(guī)范編碼規(guī)則),der(distinguishedencodingrules,唯一編碼規(guī)則),per(packedencodingrules,壓縮編碼規(guī)則)等,這些編碼類型需要注冊(cè)(rfc7230section8.4)。
得到解碼后的輸入?yún)?shù)后,以該輸入?yún)?shù)為輸入,根據(jù)該http請(qǐng)求中包含的invoke方法,調(diào)用應(yīng)用程序,以使所述應(yīng)用程序根據(jù)所述輸入?yún)?shù)對(duì)所述http請(qǐng)求進(jìn)行處理,獲取輸出參數(shù),并根據(jù)所述輸出參數(shù),生成http響應(yīng)消息。
根據(jù)示例實(shí)施例,可以從該http請(qǐng)求的請(qǐng)求行、invoking頭域和host頭域中獲取uri(uniformresourceidentifier,統(tǒng)一資源標(biāo)示符),例如,在請(qǐng)求行中可以包括requesturl(request-uri,請(qǐng)求url),將其作為uri的一個(gè)片段,在invoking頭域和host頭域獲取到uri的其他片段。根據(jù)該uri可以確定具體的應(yīng)用程序,從而調(diào)用該應(yīng)用程序,以使所述應(yīng)用程序根據(jù)解碼后的輸入?yún)?shù),對(duì)該http請(qǐng)求進(jìn)行處理。當(dāng)該應(yīng)用程序執(zhí)行完成后,服務(wù)器獲得進(jìn)程或者線程的輸出參數(shù),進(jìn)而根據(jù)該輸出參數(shù),生成http響應(yīng)消息。
需要說明的是,確定具體的應(yīng)用程序時(shí)可能需要使用輸出參數(shù)類型幫助分辨重載的標(biāo)示符。
根據(jù)示例實(shí)施例,在根據(jù)輸出參數(shù),生成http響應(yīng)消息時(shí),可以對(duì)輸出參數(shù)進(jìn)行編碼,根據(jù)編碼后的輸出參數(shù)生成http響應(yīng)消息的體,將對(duì)該輸出參數(shù)進(jìn)行編碼的編碼類型生成http響應(yīng)消息的頭域。
例如,服務(wù)方可以選擇asn.1編碼類型對(duì)該輸出參數(shù)序列進(jìn)行asn.1編碼,并將編碼后的輸出參數(shù)作為http響應(yīng)的體,根據(jù)選擇的asn.1編碼類型編寫該http響應(yīng)消息的content-encoding頭域。
需要說明的是,服務(wù)器在對(duì)輸出參數(shù)進(jìn)行編碼時(shí),編碼類型可以與輸入?yún)?shù)的編碼類型一致,也可以與輸入?yún)?shù)的編碼類型不一致。
需要說明的是,http協(xié)議中已定義的其它狀態(tài)碼可仍然維持原意,例如,在服務(wù)器正常運(yùn)行應(yīng)用程序時(shí)http響應(yīng)的狀態(tài)碼為200,當(dāng)服務(wù)器在執(zhí)行invoke方法時(shí)出現(xiàn)錯(cuò)誤,針對(duì)這些錯(cuò)誤可以設(shè)定以下錯(cuò)誤的狀態(tài)碼:
510輸入?yún)?shù)錯(cuò)誤
511無啟動(dòng)權(quán)限
512啟動(dòng)進(jìn)程超時(shí)
513進(jìn)程意外結(jié)束
需要注意的是,上述狀態(tài)碼也需要注冊(cè)(rfc7231section8.2)。
按照http協(xié)議,使用這些狀態(tài)碼組成對(duì)客戶端發(fā)出的http請(qǐng)求的http響應(yīng)消息,并將其發(fā)回客戶端,不涉及應(yīng)用程序的運(yùn)行結(jié)果,并在http響應(yīng)中使用頭域invokedfail。
例如,包含invoke方法的http請(qǐng)求:計(jì)算sin(0.2)的http響應(yīng)消息可以是:
200ok
content_encoding:der
(計(jì)算結(jié)果,即(real0.1986693307950612,null)的der編碼,因?yàn)閐er編碼可讀性差所以不展示了)
以上兩個(gè)空行是必須的。
在s130中,將所述http響應(yīng)消息發(fā)送客戶端。
服務(wù)器獲取到http響應(yīng)消息后,將該http響應(yīng)消息發(fā)送給上述客戶端。
本發(fā)明實(shí)施例中,通過接收客戶端發(fā)起的http請(qǐng)求,所述http請(qǐng)求中包含調(diào)用invoke方法;根據(jù)所述invoke方法,調(diào)用應(yīng)用程序?qū)λ鰄ttp請(qǐng)求進(jìn)行處理,獲取http響應(yīng)消息;將所述http響應(yīng)消息發(fā)送所述客戶端。實(shí)現(xiàn)了客戶端調(diào)用服務(wù)器上的應(yīng)用程序獲得數(shù)據(jù),客戶端可以不需要自己去下載安裝應(yīng)用程序也不需要下載數(shù)據(jù),一方面,擴(kuò)大了客戶端的潛力,增大了服務(wù)方與客戶端軟件的融合,減少了對(duì)網(wǎng)絡(luò)流量和客戶端的內(nèi)存的占用,另一方面,實(shí)現(xiàn)了服務(wù)器對(duì)客戶端的統(tǒng)一管理,有利于為客戶端構(gòu)建一個(gè)安全可靠的網(wǎng)絡(luò)環(huán)境。
實(shí)施例二
圖2是根據(jù)一示例性實(shí)施例示出的另一種http請(qǐng)求處理的方法的流程圖。需要說明的是,該實(shí)施例以客戶端側(cè)為執(zhí)行主體對(duì)http請(qǐng)求處理的方法進(jìn)行說明。
如圖2所示,該方法包括:
在s210中,向服務(wù)器發(fā)送http請(qǐng)求,所述http請(qǐng)求中包含調(diào)用invoke方法。
根據(jù)示例示例,該http請(qǐng)求的請(qǐng)求行中包括所述invoke方法,所述http請(qǐng)求的頭域中包括invoking頭域,該http請(qǐng)求的體中包括應(yīng)用程序的輸入?yún)?shù)。
根據(jù)示例實(shí)施例,該http請(qǐng)求的請(qǐng)求行、host頭域和invoking頭域中寫入有服務(wù)器側(cè)執(zhí)行該http請(qǐng)求的應(yīng)用程序的uri的片段。
需要注意的是,有些應(yīng)用程序的uri的片段可能只寫入在host頭域和invoking頭域中。
按照http協(xié)議的規(guī)定,可以在host頭域提供(例如www.math.com)應(yīng)用程序的主機(jī)和端口號(hào),用invoking頭域的參數(shù)指定該應(yīng)用程序在該文件系統(tǒng)中的路徑,用請(qǐng)求行中的requesturl作為統(tǒng)一資源標(biāo)示符的一個(gè)片段,從而得到一個(gè)完整的統(tǒng)一資源標(biāo)示符。
根據(jù)示例實(shí)施例,客戶端可以對(duì)上述應(yīng)用程序的輸入?yún)?shù)進(jìn)行編碼,根據(jù)編碼后的輸入?yún)?shù)生成所述http請(qǐng)求的體,將對(duì)所述輸入?yún)?shù)進(jìn)行編碼的編碼類型生成所述http請(qǐng)求的頭域。
例如,當(dāng)客戶端需要服務(wù)側(cè)計(jì)算sin(0.2)函數(shù),可以向服務(wù)器發(fā)送如下的http請(qǐng)求讓服務(wù)方進(jìn)行計(jì)算:
invoke/linux3http/1.1(請(qǐng)求行,定義了一個(gè)invoke方法,/linux3是uri的一個(gè)片段,即requesturl。http/1.1是執(zhí)行該invoke方法的應(yīng)用程序的版本號(hào))
host:www.math.com(在host頭域中包括執(zhí)行所述invoke方法的網(wǎng)絡(luò)主機(jī)和端口號(hào))
invoking:../usrbin/sin(增加的invoke頭域,表示一個(gè)應(yīng)用程序的本機(jī)相對(duì)的uri。
content-encoding:der(輸入?yún)?shù)的編碼類型為der)
catch:no-cache(指示禁止緩存)
……(請(qǐng)求的體,因?yàn)榻?jīng)過asn.1編碼后可讀性很差,所以不在此展示了)
(以上兩個(gè)空行是http請(qǐng)求語法要求的)
該http請(qǐng)求的起始行中可以包含invoke方法,該http請(qǐng)求中有頭域invoking:/usrbin/sin,請(qǐng)求行中的requesturl為/linux3。客戶端要求運(yùn)行的應(yīng)用程序的uri是://www.math.com/linux3/usrbin/sin。該http請(qǐng)求的體是上述應(yīng)用程序需要的輸入?yún)?shù)序列(real0.2,null),在http請(qǐng)求的content-encoding頭域中設(shè)定的參數(shù)der,表示http請(qǐng)求的體的編碼類型為der。另外,invoke方法禁止使用緩存,可以在cache-control頭域指示禁止緩存。
需要說明的是,http協(xié)議無法確定應(yīng)用程序的統(tǒng)一資源標(biāo)示符是什么及如何取得使用應(yīng)用程序的權(quán)限,這需要其他系統(tǒng)(例如搜索引擎)的支持。
將上述http請(qǐng)求發(fā)出后,客戶端等待服務(wù)器側(cè)處理此http請(qǐng)求。
需要說明的是,按照http協(xié)議的規(guī)定,連接建立后自動(dòng)保持,所以只要客戶端需要,就可以連續(xù)發(fā)出http請(qǐng)求,除非因?yàn)槟撤N原因服務(wù)器關(guān)閉連接以及連接非正常結(jié)束的情況為止。有些應(yīng)用程序需要連續(xù)被執(zhí)行,在有這種要求的時(shí)候,只要連接能夠維持就行了。
在s220中,接收服務(wù)器發(fā)送的http響應(yīng)消息。
客戶端接到服務(wù)方發(fā)來的http響應(yīng)消息后,從content-encoding頭域可以得知用于給輸出參數(shù)編碼的編碼類型,然后根據(jù)該編碼類型對(duì)輸出參數(shù)解碼可以獲得應(yīng)用程序執(zhí)行后的輸出參數(shù)序列。
例如,以上述客戶端需要服務(wù)側(cè)計(jì)算sin(0.2)函數(shù)為例,輸出參數(shù)的類型序列為(realnull,null)。輸入?yún)?shù)與輸出參數(shù)類型序列就是((real0.2,null),(realnull,null),null),其der編碼為300930042b302e3230012b。
如果http響應(yīng)的狀態(tài)碼為5xx或其它http協(xié)議已定義為出現(xiàn)錯(cuò)誤的狀態(tài)碼,則說明服務(wù)側(cè)沒有正常處理invoke請(qǐng)求。如果下一個(gè)請(qǐng)求依賴本次請(qǐng)求的響應(yīng),則不應(yīng)繼續(xù)發(fā)出。
而是否重復(fù)發(fā)出請(qǐng)求或進(jìn)行其它處理已經(jīng)不屬于http協(xié)議的范圍,而是客戶端使用者的任務(wù)了。例如:客戶端可以在瀏覽器上顯示結(jié)果,或使用瀏覽器所在的宿主機(jī)處理此結(jié)果。
需要說明的是,s210-s220可以反復(fù)執(zhí)行,直到客戶端向服務(wù)器發(fā)送連接終止請(qǐng)求,或者服務(wù)器關(guān)閉連接以及連接非正常結(jié)束的情況。
http協(xié)議是應(yīng)用層協(xié)議,對(duì)網(wǎng)絡(luò)的要求是客戶端與服務(wù)方的連接正常、http消息傳輸正常而且順序有保障。http/2定義了一種高效的傳輸機(jī)制,每個(gè)http請(qǐng)求被編組成“數(shù)據(jù)幀”,每個(gè)幀有唯一的順序號(hào)。將“數(shù)據(jù)幀”通過建立在連接上的“流”發(fā)送給服務(wù)器,只要保持每個(gè)會(huì)話中的http請(qǐng)求按順序發(fā)出,接到的http響應(yīng)也按順序排列即可。服務(wù)方和客戶端在接收信息時(shí)需要根據(jù)幀的編號(hào)裝配http消息和恢復(fù)消息的順序。只要http請(qǐng)求和http響應(yīng)消息在同一個(gè)“流”里,客戶端可以在一個(gè)流里發(fā)送多個(gè)請(qǐng)求,流里面不會(huì)混進(jìn)其它“流”的幀。http/2仍然保持http/1.1的消息語法和語義,所以本申請(qǐng)?zhí)岢龅膇nvoke方法也適用于http/2。
按照http協(xié)議,客戶端和服務(wù)器為人們從互聯(lián)網(wǎng)獲得信息提供了強(qiáng)有力的手段。但是從客戶端來說,現(xiàn)有已注冊(cè)方法(get,head,post,put,delete,connect,options等)只能接觸到服務(wù)方的數(shù)據(jù)文件。
本發(fā)明中,客戶端通過向服務(wù)器發(fā)送包含invoke方法的http請(qǐng)求,能夠直接調(diào)用服務(wù)器上的應(yīng)用程序,從而擴(kuò)大了客戶端的潛力,增大了服務(wù)方與客戶端軟件的融合。而且,客戶端可以不需要自己去下載安裝應(yīng)用程序和數(shù)據(jù),從而減少對(duì)網(wǎng)絡(luò)流量的占用,另一方面,實(shí)現(xiàn)了服務(wù)器對(duì)客戶端的統(tǒng)一管理,有利于為客戶端構(gòu)建一個(gè)安全可靠的網(wǎng)絡(luò)環(huán)境。
本發(fā)明提出的http請(qǐng)求處理的方法可應(yīng)用于智能住宅、智能汽車、虛擬或增強(qiáng)現(xiàn)實(shí)等應(yīng)用場(chǎng)景,在這些應(yīng)用場(chǎng)景中,需要對(duì)智能住宅和智能汽車等客戶端進(jìn)行監(jiān)視和控制,為了避免不安全的軟件或應(yīng)用程序入侵到這些客戶端,需要為這些客戶端提供安全、可信、可靠的服務(wù),構(gòu)建一個(gè)安全可靠的多應(yīng)用程序的服務(wù)器,從而保證了智能住宅和智能汽車的安全性。在虛擬或增強(qiáng)現(xiàn)實(shí)的場(chǎng)景中,客戶端的強(qiáng)大處理能力對(duì)于分擔(dān)服務(wù)方的計(jì)算壓力很有幫助。
實(shí)施例三
圖3是根據(jù)一示例性實(shí)施例示出的一種http請(qǐng)求處理的服務(wù)器的結(jié)構(gòu)圖,如圖3所示,服務(wù)器300包括:
接收模塊310,用于接收客戶端發(fā)起的http請(qǐng)求,所述http請(qǐng)求中包含調(diào)用invoke方法;
獲取模塊320,用于根據(jù)所述invoke方法,調(diào)用應(yīng)用程序?qū)λ鰄ttp請(qǐng)求進(jìn)行處理,獲取http響應(yīng)消息;
發(fā)送模塊330,用于接收所述服務(wù)器發(fā)送的http響應(yīng)消息。
本發(fā)明中,客戶端通過向服務(wù)器發(fā)送包含invoke方法的http請(qǐng)求,能夠直接調(diào)用服務(wù)器上的應(yīng)用程序,從而擴(kuò)大了客戶端的潛力,增大了服務(wù)方與客戶端軟件的融合。而且,客戶端可以不需要自己去下載安裝應(yīng)用程序和數(shù)據(jù),從而減少對(duì)網(wǎng)絡(luò)流量的占用,另一方面,實(shí)現(xiàn)了服務(wù)器對(duì)客戶端的統(tǒng)一管理,有利于為客戶端構(gòu)建一個(gè)安全可靠的網(wǎng)絡(luò)環(huán)境。
實(shí)施例四
圖4是根據(jù)一示例性實(shí)施例示出的一種http請(qǐng)求處理的客戶端的結(jié)構(gòu)圖,如圖4所示,客戶端400包括:
發(fā)送模塊410,用于向服務(wù)器發(fā)送http請(qǐng)求,所述http請(qǐng)求中包含調(diào)用invoke方法;
接收模塊420,用于接收所述服務(wù)器發(fā)送的http響應(yīng)消息。
本發(fā)明中,客戶端通過向服務(wù)器發(fā)送包含invoke方法的http請(qǐng)求,能夠直接調(diào)用服務(wù)器上的應(yīng)用程序,從而擴(kuò)大了客戶端的潛力,增大了服務(wù)方與客戶端軟件的融合。而且,客戶端可以不需要自己去下載安裝應(yīng)用程序和數(shù)據(jù),從而減少對(duì)網(wǎng)絡(luò)流量的占用,另一方面,實(shí)現(xiàn)了服務(wù)器對(duì)客戶端的統(tǒng)一管理,有利于為客戶端構(gòu)建一個(gè)安全可靠的網(wǎng)絡(luò)環(huán)境。
以上具體示出和描述了本發(fā)明的示例性實(shí)施例。應(yīng)可理解的是,本發(fā)明不限于這里描述的詳細(xì)結(jié)構(gòu)、設(shè)置方式或?qū)崿F(xiàn)方法;相反,本發(fā)明意圖涵蓋包含在所附權(quán)利要求的精神和范圍內(nèi)的各種修改和等效設(shè)置。