數(shù)據(jù)訪問方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本申請涉及網(wǎng)頁技術(shù),特別涉及數(shù)據(jù)訪問方法和裝置。
【背景技術(shù)】
[0002]混合模式應(yīng)用(Hybrid App),因兼具原生APP和超文本標(biāo)記語言(html:hypertext mark-up language)5開發(fā)的優(yōu)勢比如開發(fā)成本低、易于升級等而得到廣泛應(yīng)用。
[0003]在混合模式應(yīng)用中,當(dāng)安卓(Android)客戶端需要訪問服務(wù)器上的業(yè)務(wù)數(shù)據(jù)時,Android客戶端發(fā)送http請求給服務(wù)器,服務(wù)器收到Android客戶端發(fā)送的http請求時返回業(yè)務(wù)數(shù)據(jù)給Android客戶端,當(dāng)Android客戶端收到服務(wù)器返回的業(yè)務(wù)數(shù)據(jù)時,Android客戶端刷新已經(jīng)完成加載的html5頁面以顯示從服務(wù)器獲取的業(yè)務(wù)數(shù)據(jù)。
[0004]在上述Android客戶端獲取業(yè)務(wù)數(shù)據(jù)的描述中,http請求是Android客戶端通過調(diào)用html5頁面中的直譯式腳本語言(JS: JavaScript)來發(fā)送的,這就要求在Android客戶端發(fā)送http請求前html5頁面中的JS已經(jīng)加載完成。
[0005]也即,當(dāng)Android客戶端需要訪問服務(wù)器上的業(yè)務(wù)數(shù)據(jù)時,如果html5頁面中的JS還未加載完成,則Android客戶端不發(fā)送http請求,而是等待,直至html5頁面中的JS加載完成,之后再進(jìn)行http請求,這會導(dǎo)致Android客戶端訪問服務(wù)器上業(yè)務(wù)數(shù)據(jù)的時間比較長、效率比較低。
【發(fā)明內(nèi)容】
[0006]本申請?zhí)峁┝藬?shù)據(jù)訪問方法和裝置。以加速客戶端的業(yè)務(wù)數(shù)據(jù)訪問,提高業(yè)務(wù)數(shù)據(jù)訪問效率
[0007]本申請?zhí)峁┑募夹g(shù)方案包括:
[0008]—種數(shù)據(jù)訪問方法,該方法應(yīng)用于客戶端,包括:
[0009]通過配置文件配置http請求參數(shù);
[0010]加載本客戶端自帶文件夾中的html5頁面;
[0011]基于所述http請求參數(shù)向服務(wù)器發(fā)送http請求;
[0012]接收服務(wù)器針對所述http請求返回的業(yè)務(wù)數(shù)據(jù);
[0013]在所述html5頁面未完成加載時,將接收的業(yè)務(wù)數(shù)據(jù)存入本地隊列,并在所述html5頁面完成加載時,將本地隊列中所有業(yè)務(wù)數(shù)據(jù)加載至所述html5頁面提供給用戶。
[0014]—種數(shù)據(jù)訪問裝置,該裝置應(yīng)用于客戶端,包括:
[0015]配置單元,用于通過配置文件配置http請求參數(shù);
[0016]加載單元,用于加載本客戶端自帶文件夾中的html5頁面;
[0017]發(fā)送單元,用于基于所述http請求參數(shù)向服務(wù)器發(fā)送http請求;
[0018]接收單元,用于接收服務(wù)器針對所述http請求返回的業(yè)務(wù)數(shù)據(jù);
[0019]處理單元,用于在所述html5頁面未完成加載時,將接收的業(yè)務(wù)數(shù)據(jù)存入本地隊列,并在所述html5頁面完成加載時,將本地隊列中所有業(yè)務(wù)數(shù)據(jù)加載至所述html5頁面提供給用戶。
[0020]由以上技術(shù)方案可以看出,本發(fā)明中,http請求的發(fā)出和html5頁面的加載是相互獨(dú)立的兩個過程,http請求的發(fā)出不依賴html5頁面中的JS,沒有必要限定必須在html5頁面加載完成后才能執(zhí)行http請求,相比現(xiàn)有http請求必須在html5頁面加載完成后才能執(zhí)行,本發(fā)明能夠提高數(shù)據(jù)訪問速度和效率;
[0021]進(jìn)一步地,本發(fā)明中,當(dāng)接收到服務(wù)器針對http請求返回的業(yè)務(wù)數(shù)據(jù)時,如果html5頁面還未完成加載,則將接收的業(yè)務(wù)數(shù)據(jù)存入隊列中,等html5頁面加載完成后,將隊列中存入的由服務(wù)器返回的針對多個http請求返回的多個業(yè)務(wù)數(shù)據(jù)一次性地加載至html5頁面刷新顯示,這一方面體現(xiàn)了 hybrid混合開發(fā)應(yīng)用中的html 5頁面開發(fā),可以利用html5頁面開發(fā)容易升級等優(yōu)勢,又借鑒了本地http請求速度快的特點(diǎn)。
【附圖說明】
[0022]圖1為本發(fā)明提供的方法流程圖;
[0023]圖2為本發(fā)明提供的實施例流程圖;
[0024]圖3為本發(fā)明提供的裝置結(jié)構(gòu)示意圖。
【具體實施方式】
[0025]為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和具體實施例對本發(fā)明進(jìn)行詳細(xì)描述。
[0026]本發(fā)明提供的數(shù)據(jù)訪問方法包括圖1所示的流程:
[0027]參見圖1,圖1為本發(fā)明提供的方法流程圖。該流程應(yīng)用于客戶端比如Android客戶端,包括以下步驟:
[0028]步驟101,通過配置文件配置http請求參數(shù)。
[0029]作為本發(fā)明的一個優(yōu)選實施例,本步驟101具體為:
[0030]通過可擴(kuò)展標(biāo)記語言(XML:Exteile Marku Laguage)配置http請求參數(shù)并記錄至XML文件中。
[0031]作為一個實施例,http請求參數(shù)具體可至少包括:服務(wù)器標(biāo)識、端口、客戶端類型、業(yè)務(wù)參數(shù)。
[0032]步驟102,加載本客戶端自帶文件夾中的html5頁面。
[0033]注意,本步驟102中,加載的html5頁面是客戶端自帶文件夾中的,并非是從服務(wù)器端請求的。
[0034]步驟103,基于http請求參數(shù)向服務(wù)器發(fā)送http請求。
[0035]在本發(fā)明中,XML文件中通過XML配置http請求參數(shù),其目的是觸使客戶端基于該http請求參數(shù)發(fā)出http請求,其中,一個http請求參數(shù)對應(yīng)一個http請求?;诖耍绻鸛ML文件中存在多個http請求參數(shù),則Androd客戶端會發(fā)起各個http請求參數(shù)對應(yīng)的http請求。其中,http請求參數(shù)對應(yīng)的http請求至少攜帶了對應(yīng)的http請求參數(shù)。
[0036]另外,作為本發(fā)明的一個實施例,步驟102中的加載本客戶端自帶文件夾中的html5頁面與本步驟103中的基于所述http請求參數(shù)向服務(wù)器發(fā)送對應(yīng)的http請求是同步執(zhí)行的。
[0037]從步驟103可以看出,本步驟103中,客戶端向服務(wù)器發(fā)送的http請求是基于配置文件中的http請求參數(shù)實現(xiàn)的,并非像現(xiàn)有技術(shù)那樣,通過調(diào)用html5頁面中的JS來實現(xiàn),這就打破了現(xiàn)有客戶端必須等待html5頁面中的JS已加載完才能發(fā)送http請求的缺陷,使得本發(fā)明中客戶端發(fā)送http請求完全不依賴于html5頁面中的JS是否已加載完。
[0038]步驟104,接收服務(wù)器針對http請求返回的業(yè)務(wù)數(shù)據(jù)。
[0039]在步驟104中,當(dāng)客戶端接收到服務(wù)器針對http請求返回的業(yè)務(wù)數(shù)據(jù)時,html5頁面可能未完成加載,針對此種情況,客戶端按照如下步驟105對接收的業(yè)務(wù)數(shù)據(jù)的進(jìn)行處理,具體見步驟105。
[0040]步驟105,在html5頁面未完成加載時,將接收的業(yè)務(wù)數(shù)據(jù)存入本地隊列,并在所述html5頁面完成加載時,將本地隊列中所有業(yè)務(wù)數(shù)據(jù)加載至所述html5頁面提供給用戶。
[0041]這里,將本地隊列中所有業(yè)務(wù)數(shù)據(jù)加載至所述html5頁面提供給用戶具體可包括:
[0042]將本地隊列中所有業(yè)務(wù)數(shù)據(jù)拼接組成JS請求,通過網(wǎng)絡(luò)視圖(webview)加載的方式將所述JS請求加載至所述html5頁面以使組成所述JS請求的所有業(yè)務(wù)數(shù)據(jù)提供給用戶。
[0043]本發(fā)明中,作為一個優(yōu)選實施例,當(dāng)在如上步驟104中客戶端接收到服務(wù)器針對http請求返回的業(yè)務(wù)數(shù)據(jù)時,html5頁面已完成加載,此時,客戶端可將接收的業(yè)務(wù)數(shù)據(jù)加載至所述html5頁面提供給用戶。
[0044]這里,客戶端將接收的業(yè)務(wù)數(shù)據(jù)加載至所述html5頁面提供給用戶具體為:將接收的業(yè)務(wù)數(shù)據(jù)拼接為JS請求并通過webview加載的方式將該JS請求加載至所述html5頁面以使組成該JS請求的業(yè)務(wù)數(shù)據(jù)提供給用戶。
[0045]至此,完成圖1所示的流程描述。
[0046]通過圖1所示的流程可以看出,在本發(fā)明中,http請求的發(fā)出不依賴html5頁面中的JS,http請求的發(fā)出和html5頁面的加載是相互獨(dú)立的兩個過程,兩者之間沒有固定的時間先后順序,比如http請求和html5頁面加載完全可以同步執(zhí)行,沒有必要限定必須在html5頁面加載完成后才能執(zhí)行http請求,相比現(xiàn)有http請求必須在html5頁面加載完成后才能執(zhí)行,本發(fā)明能夠提高數(shù)據(jù)訪問速度和效率。
[0047]還有,本發(fā)明中,當(dāng)接收到服務(wù)器針對所述http請求返回的業(yè)務(wù)數(shù)據(jù)時,如果html5頁面還未完成加載,則將接收的業(yè)務(wù)數(shù)據(jù)存入隊列中,等html5頁面加載完成后,將隊列中存入的由服務(wù)器返回的針對多個http請求返回的多個業(yè)務(wù)數(shù)據(jù)一次性地加載至html5頁面刷新顯示,這一方面體現(xiàn)了 hybrid混合開發(fā)應(yīng)用中的html 5頁面開發(fā),可以利用html5頁面開發(fā)容易升級等優(yōu)勢,又借鑒了本地http請求速度快的特點(diǎn)。
[0048]下面通過一個具體實施例對圖1所示流程進(jìn)行描述:
[0049]參見圖2,圖2為本發(fā)明提供的實施例流程圖。該流程以應(yīng)用于Android客戶端為例,如圖2所示,該流程可包括以下步驟:
[0050]步驟201,采用XML為所有待發(fā)的http請求配置對應(yīng)的http請求參數(shù)。
[0051]假如根據(jù)應(yīng)用預(yù)估Android客戶端可能會發(fā)出L個http請求,則就采用XML為這L個http請求分別配置對應(yīng)的http請求參數(shù)。
[0052]下文僅舉例描述通過XML為一個http請求對應(yīng)的http請求參數(shù)的實施例,其他http請求對應(yīng)的http請求參數(shù)類似,只不過具體取值會有所不同:
[0053]〈plugin httpRequestId=,,getPageInfo” ServerUrl =,,m.jd.com” port=”8080”needProgressDialog=,,true,,appKey =,,android” appVers 1n=,,4.4.0,,>
[0054]在上述通過XML配置http請求參數(shù)的實施例中,http請求參數(shù)包含了:
[0055]httpRequestld,代表業(yè)務(wù)參數(shù),具體為 getPagelnfo;
[0056]ServerUrl,代表服務(wù)器標(biāo)識,具體為服務(wù)器的urI主機(jī)地址m.jd.com;
[0057]port,代表服務(wù)器端口,具體為端口 8080 ;
[0058]needProgressDialog,代表在Androd客戶端發(fā)出http請求的過程中,在頁面需要加載一個進(jìn)度條;
[0059]appKey,代表Android客戶端類型,是android還是或1s,這里是以android為例;
[0060]appVers 1n,代表 Andro id 客戶端版本號。
[0061 ] 步驟202,通過webview加載Android客戶端自帶文件夾中的html5頁面。
[0062]步驟203,向服務(wù)器發(fā)送http請求。
[0