一種混合型應(yīng)用客戶端的資源調(diào)用方法、客戶端及系統(tǒng)的制作方法
【專利摘要】本申請公開了一種HybridApp客戶端的資源調(diào)用方法、客戶端及系統(tǒng),用以解決現(xiàn)有技術(shù)中加載網(wǎng)頁時(shí)容易出錯(cuò)的問題。該方法客戶端接收服務(wù)端發(fā)送的包含有需調(diào)用的資源的地址的頁面數(shù)據(jù),解析頁面數(shù)據(jù)并生成資源調(diào)用請求,根據(jù)該客戶端本地的保本信息修改該資源調(diào)用請求,根據(jù)修改后的資源調(diào)用請求獲取資源。通過上述方法,當(dāng)客戶端與服務(wù)端的版本不同時(shí),可在不修改頁面數(shù)據(jù)的條件下提供正常的服務(wù),從而可以保證后續(xù)正常的加載網(wǎng)頁。
【專利說明】一種混合型應(yīng)用客戶端的資源調(diào)用方法、客戶端及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本申請涉及互聯(lián)網(wǎng)【技術(shù)領(lǐng)域】,尤其涉及一種混合型應(yīng)用客戶端的資源調(diào)用方法、客戶端及系統(tǒng)。
【背景技術(shù)】
[0002]目前,HybridApp (混合型應(yīng)用)客戶端由于其兼具了本地化應(yīng)用(NativeApp)客戶端和基于網(wǎng)頁的應(yīng)用(WebApp)客戶端的優(yōu)勢而被廣泛的應(yīng)用在移動(dòng)終端中。HybridApp客戶端雖然看上去是一個(gè)NativeApp客戶端,但其訪問的實(shí)際上是一個(gè)網(wǎng)頁。
[0003]圖1為現(xiàn)有技術(shù)中HybridApp客戶端在為用戶提供服務(wù)的過程,具體包括以下步驟:
[0004]SlOl:HybridApp客戶端根據(jù)預(yù)定的統(tǒng)一資源定位符(URL),向服務(wù)端發(fā)送攜帶該URL 的超文本傳輸協(xié)議(Hyper Text Transport Protocol, HTTP)請求。
[0005]即,HybridApp客戶端訪問預(yù)定的該URL對(duì)應(yīng)的頁面。
[0006]S102:服務(wù)端向HybridApp客戶端返回超文本標(biāo)記語言(Hyper Text MarkupLanguage, HTML)代碼。
[0007]該HTML代碼具體可以是HTML5代碼。
[0008]S103 =HybridApp客戶端解析該HTML代碼,確定該HTML代碼所要調(diào)用的javascript 或級(jí)聯(lián)樣式表(Cascading Style Sheet, CSS)。
[0009]其中,該HTML代碼中包含所要調(diào)用的javascript標(biāo)識(shí)或者CSS標(biāo)識(shí),用于標(biāo)識(shí)所要調(diào)用的javascript或者CSS。
[0010]S104:HybridApp客戶端向服務(wù)端獲取所要調(diào)用的javascript或CSS。
[0011]S105:HybridApp客戶端通過獲取的javascript或CSS調(diào)用客戶端本地的應(yīng)用程序編程接口(Application Programming Interface, API)。
[0012]S106 =HybridApp客戶端通過調(diào)用的API啟動(dòng)自身所在的移動(dòng)終端的相應(yīng)功能。
[0013]由于單純的一個(gè)javascript或CSS是不能啟用移動(dòng)終端的功能的,需要由HybridApp客戶端本地保存的API來啟用,因此,HybridApp客戶端要啟用自身所在的移動(dòng)終端的相應(yīng)功能,必須要基于HTML代碼獲取javascript或CSS,再通過獲取到的javascript或CSS調(diào)用本地的API來啟用移動(dòng)終端的功能。
[0014]例如,HybridApp客戶端提供了一個(gè)攝像頭拍照功能,服務(wù)端中保存的javascript 為 photoV2.0.js, HybridApp 客戶端中保存的 API 為 photoV2.0.jar。則Hybr i dApp客戶端先訪問服務(wù)端的頁面,確定服務(wù)端返回的HTML5代碼所要調(diào)用的javascript 為photoV2.0.js,向服務(wù)端獲取photoV2.0.js,并通過photoV2.0.js調(diào)用自身的photoV2.0.jar來啟用該HybridApp客戶端所在的移動(dòng)終端的攝像頭。
[0015]可見,HybridApp客戶端可以提供正常服務(wù)的前提是:該HybridApp客戶端的版本與服務(wù)端的版本一致。如果HybridApp客戶端的版本與服務(wù)端的版本不一致,HybridApp客戶端就不能正常提供服務(wù)。[0016]例如,HybridApp客戶端提供了一個(gè)攝像頭拍照功能,HybridApp客戶端的版本為V1.0,則HybridApp客戶端中保存的API為photoVl.0.jar(HybridApp客戶端中保存的API的版本與該HybridApp客戶端自身的版本一致)。如果服務(wù)端的版本為V2.0,則服務(wù)端中保存的javascript為photoV2.0.js。那么,服務(wù)端向HybridApp客戶端返回的HTML5代碼所要調(diào)用的 javascript 就是 photoV2.0.js。HybridApp 客戶端獲取到 photoV2.0.js 后,由于 photoV2.0.js 只能調(diào)用版本同樣為 V2.0 的 API (即 photoV2.0.jar),而 HybridApp客戶端中保存的是版本為V1.0的API (即photoVl.0.jar),因此HybridApp客戶端通過photoV2.0.js調(diào)用不到版本匹配的API,從而不能正常提供該攝像頭拍照功能。
[0017]由于并不是每個(gè)用戶都會(huì)及時(shí)的更新自身移動(dòng)終端上安裝的HybridApp客戶端的版本,因此,為了解決上述HybridApp客戶端與服務(wù)端版本不同時(shí),HybridApp客戶端不能正常提供服務(wù)的問題,在現(xiàn)有技術(shù)中,HybridApp客戶端將可以調(diào)用自身當(dāng)前版本下的所有API的javascript或CSS (以下將javascript和CSS合稱為前端資源)保存在本地,當(dāng)HybridApp客戶端接收到服務(wù)端返回的HTML代碼時(shí),如果確定該HTML代碼所要調(diào)用的前端資源的版本與該HybridApp客戶端本地的版本不一致,則采用本地保存的版本的前端資源的標(biāo)識(shí)替換HTML代碼中所要調(diào)用的前端資源的標(biāo)識(shí),并解析替換了前端資源的標(biāo)識(shí)后的HTML代碼,調(diào)用替換后的前端資源以完成相應(yīng)功能。
[0018]例如,HybridApp客戶端提供了一個(gè)攝像頭拍照功能,HybridApp客戶端的版本為V1.0,則HybridApp客戶端中保存的API為photoVl.0.jar,并且,該HybridApp客戶端中保存了可以調(diào)用photoVl.0.jar的前端資源(javascript) photoVl.0.js。服務(wù)端的版本為V2.0,服務(wù)端中保存的 javascript 為 photoV2.0.js。
[0019]貝U,服務(wù)端向HybridApp客戶端返回的HTML代碼所要調(diào)用的javascript為photoV2.0.js。HybridApp客戶端確定該HTML代碼中包含的javascript標(biāo)識(shí)為photoV2.0.j s的標(biāo)識(shí)時(shí),采用本地保存的對(duì)應(yīng)于該photoV2.0.j s、但版本不同的photoVl.0.js的標(biāo)識(shí)替換該HTML代碼中的photoV2.0.js的標(biāo)識(shí),再解析HTML代碼,根據(jù)替換后的標(biāo)識(shí)(photoVl.0.js的標(biāo)識(shí))調(diào)用本地保存的photoVl.0.js,而不從服務(wù)端中獲取photoV2.0.js。最后,HybridApp客戶端通過photoVl.0.js調(diào)用本地保存的photoVl.0.jar,以啟用移動(dòng)終端的攝像頭功能。
[0020]然而,在現(xiàn)有技術(shù)的上述方法中,由于HybridApp客戶端需要采用自身保存的photoVl.0.js的標(biāo)識(shí)來替換服務(wù)端返回的HTML代碼中的photoV2.0.js的標(biāo)識(shí),因此,這就必然會(huì)破壞該HTML代碼的原始結(jié)構(gòu),尤其是當(dāng)該HTML代碼為HTML5代碼時(shí),還會(huì)使HTML5代碼中自身的AppCache功能失效,這就會(huì)導(dǎo)致后續(xù)基于HTML代碼加載網(wǎng)頁時(shí)容易出現(xiàn)錯(cuò)誤。
【發(fā)明內(nèi)容】
[0021]本申請實(shí)施例提供一種混合型應(yīng)用客戶端的資源調(diào)用方法、客戶端及系統(tǒng),用以解決現(xiàn)有技術(shù)中加載網(wǎng)頁時(shí)容易出錯(cuò)的問題。
[0022]本申請實(shí)施例提供的一種混合型應(yīng)用客戶端的資源調(diào)用方法,包括:
[0023]向服務(wù)端發(fā)送頁面請求消息;
[0024]接收服務(wù)端根據(jù)所述頁面請求消息返回的頁面數(shù)據(jù);[0025]解析所述頁面數(shù)據(jù),獲取需要調(diào)用的資源的地址,生成資源調(diào)用請求;
[0026]獲取客戶端本地的版本信息,根據(jù)客戶端本地的版本信息修改所述資源調(diào)用請求;
[0027]根據(jù)修改后的資源調(diào)用請求獲取資源。
[0028]本申請實(shí)施例提供的一種混合型應(yīng)用客戶端,包括:瀏覽器插件及內(nèi)置模塊;
[0029]所述瀏覽器插件,用于向服務(wù)端發(fā)送頁面請求消息,接收服務(wù)端根據(jù)所述頁面請求消息返回的頁面數(shù)據(jù),解析所述頁面數(shù)據(jù),獲取需要調(diào)用的資源的地址,生成資源調(diào)用請求;
[0030]所述內(nèi)置模塊包括監(jiān)聽單元、解析單元及資源讀取單元;
[0031]所述監(jiān)聽單元,用于監(jiān)聽所述瀏覽器插件發(fā)送的資源調(diào)用請求;
[0032]所述解析單元,用于獲取客戶端本地的版本信息,根據(jù)客戶端本地的版本信息修改所述監(jiān)聽單元監(jiān)聽到的所述資源調(diào)用請求;
[0033]所述資源讀取單元,用于根據(jù)修改后的資源調(diào)用請求獲取資源,并將獲取到的資源返回給所述瀏覽器插件。
[0034]本申請實(shí)施例提供的一種混合型應(yīng)用系統(tǒng),包括:
[0035]服務(wù)端,用于接收客戶端發(fā)送的頁面請求消息,根據(jù)所述頁面請求消息,向所述客戶端返回頁面數(shù)據(jù);
[0036]客戶端,用于接收服務(wù)端返回的頁面數(shù)據(jù),解析所述頁面數(shù)據(jù),獲取需要調(diào)用的資源的地址,生成資源調(diào)用請求;獲取所述客戶端本地的版本信息,根據(jù)客戶端本地的版本信息修改接收到的所述資源調(diào)用請求,根據(jù)修改后的資源調(diào)用請求獲取資源。
[0037]本申請實(shí)施例提供一種混合型應(yīng)用客戶端的資源調(diào)用方法、客戶端及系統(tǒng),該方法客戶端接收服務(wù)端發(fā)送的包含有需調(diào)用的資源的地址的頁面數(shù)據(jù),解析頁面數(shù)據(jù)并生成資源調(diào)用請求,根據(jù)該客戶端本地的保本信息修改該資源調(diào)用請求,根據(jù)修改后的資源調(diào)用請求獲取資源。通過上述方法,當(dāng)客戶端與服務(wù)端的版本不同時(shí),可在不修改頁面數(shù)據(jù)的條件下提供正常的服務(wù),從而可以保證后續(xù)正常的加載網(wǎng)頁。
【專利附圖】
【附圖說明】
[0038]圖1為現(xiàn)有技術(shù)中HybridApp客戶端在為用戶提供服務(wù)的過程;
[0039]圖2為本申請實(shí)施例提供的客戶端與服務(wù)端的交互過程;
[0040]圖3為本申請實(shí)施例提供的第二客戶端向第一客戶端發(fā)送注冊信息的示意圖;
[0041]圖4為本申請實(shí)施例提供的第一客戶端的內(nèi)置模塊未啟用時(shí),第二客戶端啟用自身的內(nèi)置模塊的示意圖;
[0042]圖5為本申請實(shí)施例提供的HybridApp客戶端結(jié)構(gòu)示意圖;
[0043]圖6為本申請實(shí)施例提供的資源調(diào)用系統(tǒng)結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0044]本申請實(shí)施例服務(wù)端向客戶端發(fā)送的頁面數(shù)據(jù)中包含需調(diào)用的資源的地址,解析頁面數(shù)據(jù)并生成資源調(diào)用請求,根據(jù)該客戶端本地的版本信息修改該資源調(diào)用請求,根據(jù)修改后的資源調(diào)用請求獲取資源,實(shí)現(xiàn)了當(dāng)客戶端與服務(wù)端的版本不一致時(shí),客戶端可在不修改頁面數(shù)據(jù)的條件下正常提供服務(wù),保證后續(xù)可以正常的基于頁面數(shù)據(jù)加載網(wǎng)頁。
[0045]下面結(jié)合說明書附圖對(duì)本申請實(shí)施例進(jìn)行詳細(xì)描述。
[0046]圖2為本申請實(shí)施例提供的客戶端與服務(wù)端的交互過程,具體包括以下步驟:
[0047]S201:向服務(wù)端發(fā)送頁面請求消息。
[0048]本申請實(shí)施例中所述的客戶端為混合型應(yīng)用(HybridApp)客戶端。當(dāng)客戶端提供服務(wù)時(shí),客戶端中的瀏覽器插件先根據(jù)預(yù)設(shè)的URL,向服務(wù)端發(fā)送頁面請求消息,用于向服務(wù)端請求獲取該URL對(duì)應(yīng)的網(wǎng)頁。其中,所述服務(wù)端為網(wǎng)絡(luò)服務(wù)端。該頁面請求消息可以是HTTP請求消息。
[0049]S202:接收服務(wù)端根據(jù)該頁面請求消息返回的頁面數(shù)據(jù)。
[0050]服務(wù)端接收到該頁面請求消息后,則根據(jù)該頁面請求消息中攜帶的URL,向客戶端返回該URL對(duì)應(yīng)的網(wǎng)頁的頁面數(shù)據(jù)。
[0051]其中,為實(shí)現(xiàn)頁面特定的功能,該頁面數(shù)據(jù)中包含所要調(diào)用的資源的相關(guān)信息,如該資源的地址。該資源的地址可以是該客戶端本地的地址。該資源包括用于執(zhí)行特定的本地功能(比如,拍照、語音功能等)所需的依賴資源,即前端資源。
[0052]在本申請實(shí)施例中,該地址中包含資源名稱以及版本占位符。
[0053]具體的,服務(wù)端返回的頁面數(shù)據(jù)為HTML代碼。該HTML代碼中包含的地址可以是SRC路徑,該HTML代碼可 以是HTML5代碼。
[0054]例如,服務(wù)端可以根據(jù)預(yù)先設(shè)定的協(xié)議返回HTML代碼,返回的HTML代碼的格式如下:
[0055]
【權(quán)利要求】
1.一種混合型應(yīng)用客戶端的資源調(diào)用方法,其特征在于,包括: 向服務(wù)端發(fā)送頁面請求消息; 接收服務(wù)端根據(jù)所述頁面請求消息返回的頁面數(shù)據(jù); 解析所述頁面數(shù)據(jù),獲取需要調(diào)用的資源的地址,生成資源調(diào)用請求; 獲取客戶端本地的版本信息,根據(jù)客戶端本地的版本信息修改所述資源調(diào)用請求; 根據(jù)修改后的資 源調(diào)用請求獲取資源。
2.如權(quán)利要求1所述的方法,其特征在于,所述頁面數(shù)據(jù)為超文本標(biāo)記語言HTML代碼,所述HTML代碼中包含需要調(diào)用的資源的地址。
3.如權(quán)利要求1所述的方法,其特征在于,所述地址中包含需要調(diào)用的資源的名稱及版本占位符,版本占位符標(biāo)識(shí)所述資源為限制性資源。
4.如權(quán)利要求3所述的方法,其特征在于,根據(jù)本地的版本信息修改所述資源調(diào)用請求,具體包括:對(duì)所述資源調(diào)用請求進(jìn)行監(jiān)聽; 判斷所述資源調(diào)用請求中是否包含版本占位符,當(dāng)所述資源調(diào)用請求包含版本占位符時(shí),將版本占位符替換為客戶端本地的版本信息。
5.如權(quán)利要求1所述的方法,其特征在于,根據(jù)修改后的資源調(diào)用請求獲取資源,具體包括: 基于修改后的資源調(diào)用請求包含的資源的名稱及版本信息,從所述客戶端本地獲取相應(yīng)的資源; 當(dāng)所述客戶端本地未保存相應(yīng)的資源時(shí),從所述服務(wù)端中獲取相應(yīng)的資源,并將獲取到的資源保存在本地。
6.如權(quán)利要求4所述的方法,其特征在于,所述客戶端包括第一客戶端及第二客戶端;所述方法還包括: 所述第一客戶端接收第二客戶端發(fā)送的注冊信息,保存所述注冊信息中攜帶的所述第二客戶端當(dāng)前的版本信息; 當(dāng)接收到所述第二客戶端發(fā)送的資源調(diào)用請求時(shí),所述第一客戶端將所述資源調(diào)用請求中攜帶的地址中包含的版本占位符修改為保存的所述第二客戶端當(dāng)前的版本信息,根據(jù)修改后的資源調(diào)用請求中攜帶的地址,獲取相應(yīng)的資源,并將獲取到的資源返回給所述第二客戶端。
7.一種混合型應(yīng)用客戶端,其特征在于,包括:瀏覽器插件及內(nèi)置模塊; 所述瀏覽器插件,用于向服務(wù)端發(fā)送頁面請求消息,接收服務(wù)端根據(jù)所述頁面請求消息返回的頁面數(shù)據(jù),解析所述頁面數(shù)據(jù),獲取需要調(diào)用的資源的地址,生成資源調(diào)用請求;所述內(nèi)置模塊包括監(jiān)聽單元、解析單元及資源讀取單元; 所述監(jiān)聽單元,用于監(jiān)聽所述瀏覽器插件生成的資源調(diào)用請求; 所述解析單元,用于獲取客戶端本地的版本信息,根據(jù)客戶端本地的版本信息修改所述監(jiān)聽單元監(jiān)聽到的所述資源調(diào)用請求; 所述資源讀取單元,用于根據(jù)修改后的資源調(diào)用請求獲取資源,并將獲取到的資源返回給所述瀏覽器插件。
8.如權(quán)利要求7所述的客戶端,其特征在于,所述頁面數(shù)據(jù)為超文本標(biāo)記語言HTML代碼,所述HTML代碼中包含需要調(diào)用的資源的地址。
9.如權(quán)利要求7所述的客戶端,其特征在于,所述地址中包含需要調(diào)用的資源的名稱及版本占位符,版本占位符標(biāo)識(shí)所述資源為限制性資源;所述解析單元判斷所述監(jiān)聽單元監(jiān)聽到的資源調(diào)用請求中是否包含版本占位符,當(dāng)該資源調(diào)用請求包含版本占位符時(shí),采用客戶端本地的版本信息替換該版本占位符。
10.如權(quán)利要求9所述的客戶端,其特征在于,所述資源讀取單元具體用于,基于修改后的資源調(diào)用請求包含的資源的名稱及版本信息,從本地獲取相應(yīng)的資源,當(dāng)本地未保存相應(yīng)的資源時(shí),從所述服務(wù)端中獲取相應(yīng)的資源,并將獲取到的資源保存在本地。
11.一種資源調(diào)用系統(tǒng),其特征在于,包括: 服務(wù)端,用于接收客戶端發(fā)送的頁面請求消息,根據(jù)所述頁面請求消息,向所述客戶端返回頁面數(shù)據(jù); 客戶端,用于接收服務(wù)端返回的頁面數(shù)據(jù),解析所述頁面數(shù)據(jù),獲取需要調(diào)用的資源的地址,生成資源調(diào)用請求;獲取所述客戶端本地的版本信息,根據(jù)客戶端本地的版本信息修改接收到的所述資源調(diào) 用請求,根據(jù)修改后的資源調(diào)用請求獲取資源。
【文檔編號(hào)】G06F17/30GK103942225SQ201310024460
【公開日】2014年7月23日 申請日期:2013年1月23日 優(yōu)先權(quán)日:2013年1月23日
【發(fā)明者】曲子深 申請人:阿里巴巴集團(tuán)控股有限公司