改已編寫(xiě)的每個(gè)網(wǎng)頁(yè)中的URL,簡(jiǎn)化了操作節(jié)約了時(shí)間,且不需要做客戶端版本兼容的效果。
[0043]請(qǐng)參考圖3A,其示出了本發(fā)明一個(gè)實(shí)施例提供的應(yīng)用程序接口調(diào)用方法的方法流程圖。該應(yīng)用程序接口調(diào)用方法,包括:
[0044]步驟301,在網(wǎng)頁(yè)加載完成后,客戶端將預(yù)先存儲(chǔ)的JS文件加載到網(wǎng)頁(yè)中;
[0045]JS文件預(yù)先存儲(chǔ)于本地,JS文件包括了客戶端提供的不同應(yīng)用程序編程接口 API所對(duì)應(yīng)的JS URL。
[0046]為了調(diào)用API,預(yù)先對(duì)API設(shè)定相應(yīng)的URL映射,比如:打開(kāi)用戶攝像頭API所對(duì)應(yīng)的 JSURL 定義為 JSAPICall://opencamera?type=XX ;其中,JSAPICall 是所有這類方法的URL scheme ;opencamera是打開(kāi)攝像頭的URL path (URL路徑);type是參數(shù),取值為rear/front,分別代表打開(kāi)后置/前置攝像頭;打開(kāi)用戶后置攝像頭的URL即JSAPICall://opencamera ? type=rear ;打開(kāi)用戶前置攝像頭的 URL 即 JSAPICal1://opencamera ?type=front0不同的API對(duì)應(yīng)不同的JSURL。
[0047]步驟302,在客戶端加載網(wǎng)頁(yè)時(shí),網(wǎng)頁(yè)接收客戶端加載入網(wǎng)頁(yè)中的JS文件;
[0048]JS文件預(yù)先存儲(chǔ)于本地,JS文件包括了客戶端提供的不同應(yīng)用程序編程接口 API所對(duì)應(yīng)的JS URL。
[0049]本實(shí)施例與【背景技術(shù)】提到的方式不同,本實(shí)施例是在客戶端加載網(wǎng)頁(yè)的時(shí),才將JS文件加載入該網(wǎng)頁(yè)中,而不需要事先將API對(duì)應(yīng)的URL編碼進(jìn)網(wǎng)頁(yè)中。
[0050]步驟303,客戶端向網(wǎng)頁(yè)發(fā)送用于表示JS文件是否成功加載至網(wǎng)頁(yè)的JS事件;
[0051]客戶端發(fā)送JS事件給網(wǎng)頁(yè),以便網(wǎng)頁(yè)用于確認(rèn)JS文件是否加載成功。
[0052]步驟304,網(wǎng)頁(yè)監(jiān)聽(tīng)客戶端發(fā)送的用于表示JS文件是否成功加載至網(wǎng)頁(yè)的JS事件;
[0053]步驟305,在根據(jù)JS事件確認(rèn)JS文件加載成功后,網(wǎng)頁(yè)通過(guò)調(diào)用JS文件向客戶端發(fā)送調(diào)用請(qǐng)求;
[0054]調(diào)用請(qǐng)求中攜帶有需要調(diào)用的API所對(duì)應(yīng)的JS URL,以便客戶端根據(jù)JSURL調(diào)用對(duì)應(yīng)的API。
[0055]比如,網(wǎng)頁(yè)向客戶端發(fā)送打開(kāi)用戶攝像頭的調(diào)用請(qǐng)求:funct1nopenCamera(type) {
[0056]var urI=’ JSAPICal1://opencamera?type=' +type;
[0057]Window, locat1n.href=url;
[0058]}
[0059]步驟306,客戶端接收網(wǎng)頁(yè)通過(guò)調(diào)用JS文件發(fā)送的調(diào)用請(qǐng)求;
[0060]調(diào)用請(qǐng)求中攜帶有需要調(diào)用的API所對(duì)應(yīng)的JS URL。
[0061]步驟307,客戶端根據(jù)JS URL調(diào)用對(duì)應(yīng)的API。
[0062]如圖3B,本步驟具體包括如下子步驟:
[0063]307a,客戶端根據(jù)指定格式從調(diào)用請(qǐng)求中截獲JS URL ;
[0064]客戶端可以通過(guò)內(nèi)置瀏覽器控件根據(jù)指定格式從調(diào)用請(qǐng)求中截獲JS URL。指定格式是指預(yù)設(shè)的格式,比如,若預(yù)設(shè)格式為的JS格式,那么客戶端則從調(diào)用請(qǐng)求中截獲JS格式的URL,也即本實(shí)施例中的JS URL。
[0065]比如,客戶端截獲調(diào)用請(qǐng)求中URL scheme是JSAPICall的JS URL JSAPICall://opencamera ? type=rear0
[0066]307b,客戶端解析JS URL中的路徑;
[0067]路徑用于定位與JS URL所對(duì)應(yīng)的API。如,JSAPICall://opencamera ?中的“opencamera” 即為路徑。
[0068]307c,客戶端根據(jù)路徑調(diào)用API。
[0069]比如,客戶端根據(jù)“opencamera”調(diào)用攝像頭。
[0070]需要補(bǔ)充說(shuō)明的是,當(dāng)JS URL中存在參數(shù)時(shí),客戶端還需要解析JS URL中的參數(shù),根據(jù)解析出的參數(shù)進(jìn)一步定位API,具體如下:
[0071]客戶端解析JS URL中的參數(shù);參數(shù)用于在API被調(diào)用時(shí)執(zhí)行與參數(shù)相應(yīng)的操作。
[0072]t匕如,JSAPICal1://opencamera ? type=rear 中的 “rear” 即為參數(shù)。
[0073]當(dāng)客戶端解析出路徑和參數(shù)時(shí),客戶端根據(jù)路徑調(diào)用API執(zhí)行與參數(shù)相應(yīng)的操作。比如,JSAPICall://opencamera ? type=rear中的參數(shù)“rear”用于調(diào)用后置攝像頭;JSAPICal1: //opencamera ? type=front 中的參數(shù)“front” 用于調(diào)用前置攝像頭。
[0074]綜上所述,本實(shí)施例提供的應(yīng)用程序接口調(diào)用方法,通過(guò)在網(wǎng)頁(yè)加載完成后,將預(yù)先存儲(chǔ)的JS文件加載到網(wǎng)頁(yè)中;接收網(wǎng)頁(yè)通過(guò)調(diào)用JS文件發(fā)送的調(diào)用請(qǐng)求;根據(jù)JS URL調(diào)用對(duì)應(yīng)的API ;解決了當(dāng)指定格式的URL的編碼規(guī)則變更時(shí),需要修改已編寫(xiě)的每個(gè)網(wǎng)頁(yè)中的URL,操作復(fù)雜浪費(fèi)時(shí)間,且對(duì)于不同的版本的客戶端的兼容性也較差的問(wèn)題;達(dá)到了只需要在網(wǎng)頁(yè)加載完成時(shí)將JS文件加載到該網(wǎng)頁(yè)中就能通過(guò)JS文件中的JS URL調(diào)用對(duì)應(yīng)的API,當(dāng)JS URL的編碼規(guī)則發(fā)生變化時(shí),不需要修改已編寫(xiě)的每個(gè)網(wǎng)頁(yè)中的URL,簡(jiǎn)化了操作節(jié)約了時(shí)間,且不需要做客戶端版本兼容的效果。
[0075]如圖3C所示,在一個(gè)具體的實(shí)施例中,網(wǎng)頁(yè)通過(guò)客戶端調(diào)用API的步驟如下:
[0076]1、客戶端31完成網(wǎng)頁(yè)33加載時(shí),將JS文件32加載到網(wǎng)頁(yè)33中;
[0077]2、JS文件加載完成后,客戶端31向網(wǎng)頁(yè)33發(fā)送一個(gè)JS事件;
[0078]3、網(wǎng)頁(yè)33根據(jù)接收到的JS事件當(dāng)監(jiān)聽(tīng)到JS文件加載成功后,通過(guò)JS文件32向客戶端31發(fā)送調(diào)用請(qǐng)求;
[0079]4、客戶端接收到該調(diào)用請(qǐng)求之后,通過(guò)UI Webview34截獲指定格式的URL ;
[0080]5、客戶端31解析截獲到的URL,得到路徑和參數(shù);
[0081]6、客戶端31根據(jù)解析出的路徑和參數(shù)調(diào)用對(duì)應(yīng)的API35。
[0082]以下為本發(fā)明的裝置實(shí)施例,對(duì)于其中未詳盡描述的細(xì)節(jié),可以參考上述對(duì)應(yīng)的方法實(shí)施例。
[0083]請(qǐng)參考圖4,其示出了本發(fā)明一個(gè)實(shí)施例提供的應(yīng)用程序接口調(diào)用裝置的結(jié)構(gòu)示意圖。該應(yīng)用程序接口調(diào)用裝置可以通過(guò)軟件、硬件或者兩者的結(jié)合實(shí)現(xiàn)成為客戶端400的全部或者一部分,該應(yīng)用程序接口調(diào)用裝置包括:文件加載模塊420、請(qǐng)求接收模塊440和API調(diào)用模塊460 ;
[0084]文件加載模塊420,用于在網(wǎng)頁(yè)加載完成后,將預(yù)先存儲(chǔ)的JS文件加載到網(wǎng)頁(yè)中,JS文件包括了客戶端提供的不同應(yīng)用程序編程接口 API所對(duì)應(yīng)的JSURL ;
[0085]請(qǐng)求接收模塊440,用于接收網(wǎng)頁(yè)通過(guò)調(diào)用文件加載模塊420加載的JS文件發(fā)送的調(diào)用請(qǐng)求,調(diào)用請(qǐng)求中攜帶有需要調(diào)用的API所對(duì)應(yīng)的JS URL ;
[0086]API調(diào)用模塊460,用于根據(jù)請(qǐng)求接收模塊440接收到的JS URL調(diào)用對(duì)應(yīng)的API。
[0087]綜上所述,本實(shí)施例提供的應(yīng)用程序接口調(diào)用裝置,通過(guò)在網(wǎng)頁(yè)加載完成后,將預(yù)先存儲(chǔ)的JS文件加載到網(wǎng)頁(yè)中;接收網(wǎng)頁(yè)通過(guò)調(diào)用JS文件發(fā)送的調(diào)用請(qǐng)求;根據(jù)JS URL調(diào)用對(duì)應(yīng)的API ;解決了當(dāng)指定格式的URL的編碼規(guī)則變更時(shí),需要修改已編寫(xiě)的每個(gè)網(wǎng)頁(yè)中的URL,操作復(fù)雜浪費(fèi)時(shí)間,且對(duì)于不同的版本的客戶端的兼容性也較差的問(wèn)題;達(dá)到了只需要在網(wǎng)頁(yè)加載完成時(shí)將JS文件加載到該網(wǎng)頁(yè)中就能通過(guò)JS文件中的JS URL調(diào)用對(duì)應(yīng)的API,當(dāng)JS URL的編碼規(guī)則發(fā)生變化時(shí),不需要修改已編寫(xiě)的每個(gè)網(wǎng)頁(yè)中的URL,簡(jiǎn)化了操作節(jié)約了時(shí)間,且不需要做客戶端版本兼容的效果。
[0088]請(qǐng)參考圖5,其示出了本發(fā)明一個(gè)實(shí)施例提供的應(yīng)用程序接口調(diào)用裝置的結(jié)構(gòu)示意圖。該應(yīng)用程序接口調(diào)用裝置可以通過(guò)軟件、硬件或者兩者的結(jié)合實(shí)現(xiàn)成為網(wǎng)頁(yè)500的全部或者一部分,該應(yīng)用程序接口調(diào)用裝置包括:文件接收模塊520和請(qǐng)求發(fā)送模塊540 ;
[0089]文件接收模塊520,用于在客戶端加載網(wǎng)頁(yè)時(shí),接收客戶端加載入網(wǎng)頁(yè)中的JS文件,JS文件預(yù)先存儲(chǔ)于本地,JS文件包括了客戶端提供的不同應(yīng)用程序編程接口 API所對(duì)應(yīng)的JS URL ;
[0090]請(qǐng)求發(fā)送模塊540,用于通過(guò)調(diào)用文件接收模塊520接收到的JS文件向客戶端發(fā)送調(diào)用請(qǐng)求,調(diào)用請(qǐng)求中攜帶有需要調(diào)用的API所對(duì)應(yīng)的JS URL,以便客戶端根據(jù)JS URL調(diào)用對(duì)應(yīng)的API。
[0091]綜上所述,本實(shí)施例提供的應(yīng)用程序接口調(diào)用裝置,通過(guò)在客戶端加載網(wǎng)頁(yè)時(shí),接收客戶端加載入網(wǎng)頁(yè)中的JS文件,JS文件預(yù)先存儲(chǔ)于本地,JS文件包括了客戶端提供的不同應(yīng)用程序編程接口 API所對(duì)應(yīng)的JS URL ;通過(guò)調(diào)用JS文件向客戶端發(fā)送調(diào)用請(qǐng)求,調(diào)用請(qǐng)求中攜帶有需要調(diào)用的API所對(duì)應(yīng)的JSURL,以便客戶端根據(jù)JS URL調(diào)用對(duì)應(yīng)的API ;解決了當(dāng)指定格式的URL的編碼規(guī)則變更時(shí),需要修改已編寫(xiě)的每個(gè)網(wǎng)頁(yè)中的URL,操作復(fù)雜浪費(fèi)時(shí)間,且對(duì)于不同的版本的客戶端的兼容性也較差的問(wèn)題;達(dá)到了只需要在網(wǎng)頁(yè)加載完成時(shí)將JS文件加載到該網(wǎng)頁(yè)中就能通過(guò)JS文件中的JS URL調(diào)用對(duì)應(yīng)的API,當(dāng)JS URL的編碼規(guī)則發(fā)生變化時(shí),不需要修改已