王曉琳
基于HttpClient的代購(gòu)?fù)郊夹g(shù)研究與實(shí)現(xiàn)
王曉琳
網(wǎng)絡(luò)代購(gòu)作為電子商務(wù)的一種形式,已經(jīng)發(fā)展的十分成熟。人們不再僅限于參與本國(guó)的網(wǎng)絡(luò)購(gòu)物,而是越來(lái)越多地參與各國(guó)知名電子商務(wù)網(wǎng)站的購(gòu)買(mǎi)活動(dòng)。由于種種原因,導(dǎo)致跨國(guó)度網(wǎng)上購(gòu)物難以實(shí)現(xiàn),于是出現(xiàn)了代購(gòu)網(wǎng)站,提供國(guó)外代購(gòu)服務(wù)。提出的代購(gòu)?fù)郊夹g(shù),是一種新型的代購(gòu)網(wǎng)站解決模型。首先,使用HttpClient抓取國(guó)外電子商務(wù)網(wǎng)站頁(yè)面的數(shù)據(jù)用于展示,保證信息的實(shí)時(shí)性、減少了系統(tǒng)數(shù)據(jù)庫(kù)的開(kāi)銷(xiāo)。再使用HttpClient將用戶(hù)的每一次購(gòu)買(mǎi)請(qǐng)求,同步到國(guó)外的電子商務(wù)網(wǎng)站當(dāng)中,直接完成真正的購(gòu)買(mǎi)行為。該模型具有更好的自動(dòng)性、通用性和穩(wěn)定性。
電子商務(wù);HttpClient;網(wǎng)絡(luò)代購(gòu);代購(gòu)?fù)郊夹g(shù)
隨著電子商務(wù)技術(shù)的愈發(fā)成熟,網(wǎng)絡(luò)購(gòu)物的概念已經(jīng)深入人心,越來(lái)越多的人參與到網(wǎng)絡(luò)購(gòu)物活動(dòng)中。人們已不再僅限于通過(guò)電子商務(wù)網(wǎng)站購(gòu)買(mǎi)本國(guó)的商品,而是想通過(guò)網(wǎng)絡(luò)購(gòu)物的途徑,購(gòu)得更優(yōu)質(zhì)更廉價(jià)的國(guó)外商品。但是,由于缺少外國(guó)銀行賬號(hào)難以支付,語(yǔ)言溝通的障礙,商品賣(mài)家不愿將商品寄往國(guó)外等諸多客觀因素,導(dǎo)致人們無(wú)法順利參與國(guó)外電子商務(wù)網(wǎng)站的網(wǎng)絡(luò)購(gòu)物。于是,網(wǎng)絡(luò)代購(gòu)這一種嶄新模式電子商務(wù)的模式出現(xiàn)并迅速普及開(kāi)來(lái)。通過(guò)網(wǎng)絡(luò)代購(gòu)的方式,人們可以方便地購(gòu)買(mǎi)心儀的進(jìn)口商品,同時(shí)可以避免繳納巨額的進(jìn)口關(guān)稅。許多進(jìn)口商品的高品質(zhì)和低價(jià)格,也吸引更多的人開(kāi)始參與網(wǎng)絡(luò)代購(gòu)。國(guó)內(nèi)網(wǎng)絡(luò)代購(gòu)網(wǎng)站的形式和數(shù)量,已經(jīng)發(fā)展的十分成熟,有穩(wěn)定的購(gòu)買(mǎi)和郵寄渠道。2013年上海自貿(mào)區(qū)的成立,進(jìn)一步刺激了網(wǎng)絡(luò)代購(gòu)行業(yè)的發(fā)展。商品代購(gòu)覆蓋的國(guó)家數(shù)量不斷增加,提供許多具有國(guó)家特色的商品。現(xiàn)在,人們只需要在代購(gòu)網(wǎng)站挑選和購(gòu)買(mǎi)商品,就可以通過(guò)代購(gòu)的方式,獲得心儀的進(jìn)口商品。在代購(gòu)網(wǎng)站的整個(gè)購(gòu)物操作,與參與普通的網(wǎng)絡(luò)購(gòu)物相同。
為了實(shí)現(xiàn)此類(lèi)網(wǎng)絡(luò)代購(gòu),一種針對(duì)國(guó)外電子商務(wù)網(wǎng)站的代理行業(yè)應(yīng)運(yùn)而生。現(xiàn)階段主要存在兩種代購(gòu)方式:一種是通過(guò)線下委托代理人或者代理公司進(jìn)行購(gòu)買(mǎi),另一種是使用專(zhuān)業(yè)的代購(gòu)網(wǎng)站。前者需要先告知需要的商品,才能獲取代購(gòu)商品的價(jià)格和運(yùn)費(fèi)等信息,交互性太差,且整個(gè)操作流程比較繁雜。而后者因?yàn)橛押玫慕换ヒ约氨憬莸牟僮?,逐漸成為主流方式。人們通過(guò)代購(gòu)網(wǎng)站,如同參與國(guó)內(nèi)網(wǎng)絡(luò)購(gòu)物一樣,方便地實(shí)現(xiàn)與國(guó)外網(wǎng)站的同步購(gòu)買(mǎi)。人們?cè)诖?gòu)網(wǎng)站上的每次購(gòu)買(mǎi)操作,均實(shí)時(shí)地同步到實(shí)際的電子商務(wù)網(wǎng)站,實(shí)現(xiàn)真實(shí)的購(gòu)買(mǎi)。代購(gòu)網(wǎng)站實(shí)現(xiàn)核心功能需要考慮以下幾點(diǎn):1、實(shí)時(shí)地獲取最新的商品信息;2、友好的購(gòu)物交互體驗(yàn);3、同步購(gòu)買(mǎi)操作需要快速和低延時(shí)。
針對(duì)以上問(wèn)題,本文提出了一種穩(wěn)定和通用的代購(gòu)?fù)郊夹g(shù)實(shí)現(xiàn)方法。通過(guò)網(wǎng)絡(luò)爬蟲(chóng)技術(shù),使用HttpClient工具包抓取國(guó)外電子商務(wù)網(wǎng)站的數(shù)據(jù)信息用于展示。本地提交出價(jià)信息后,自動(dòng)同步購(gòu)買(mǎi)操作到商品所在電子商務(wù)網(wǎng)站,完成真正的網(wǎng)絡(luò)購(gòu)買(mǎi)流程,最后返回代購(gòu)網(wǎng)站購(gòu)買(mǎi)成功或失敗的信息。該方法適用于代理所有的國(guó)外電子商務(wù)網(wǎng)站,并且較好地實(shí)現(xiàn)了代購(gòu)網(wǎng)站的核心功能。
HTTP協(xié)議是當(dāng)今互聯(lián)網(wǎng)上使用的最重要的協(xié)議,絕大部分的Java應(yīng)用程序都是通過(guò)HTTP協(xié)議來(lái)訪問(wèn)網(wǎng)絡(luò)資源。在原生態(tài)的JDK中,已經(jīng)提供了訪問(wèn)HTTP協(xié)議的基本功能。但是,對(duì)于大部分應(yīng)用程序,JDK庫(kù)本身提供的功能,過(guò)于簡(jiǎn)單和笨拙,遠(yuǎn)遠(yuǎn)無(wú)法滿足開(kāi)發(fā)的需要。HttpClient是Apache Jakarta Common下的子項(xiàng)目,用來(lái)提供高效的、最新的、功能豐富的支持HTTP協(xié)議的客戶(hù)端編程工具包,并且它支持HTTP協(xié)議最新的版本和建議[1]。
HttpClient提供了許多功能組件,設(shè)計(jì)的非常靈活易用,同時(shí)應(yīng)用的十分廣泛。它實(shí)現(xiàn)了所有HTTP的方法,如常見(jiàn)的GET、POST、PUT、HEAD等。本文中所應(yīng)用的主要是其所實(shí)現(xiàn)的GET和POST方法。使用GET方法,可以抓取國(guó)外電子商務(wù)網(wǎng)站對(duì)應(yīng)網(wǎng)頁(yè)的所有信息,實(shí)時(shí)并且準(zhǔn)確;使用POST方法,可以獲取需要的session信息,還可以發(fā)送帶有session信息的POST請(qǐng)求。
使用 HttpClient實(shí)現(xiàn)GET和POST方法相類(lèi)似,主要區(qū)別在于GetMethod的實(shí)例與PostMethod的實(shí)例設(shè)置有些不同。具體步驟如下:首先,創(chuàng)建一個(gè)HttpClient的實(shí)例,創(chuàng)建并設(shè)置GetMethod或者PostMethod的實(shí)例。調(diào)用創(chuàng)建好的HttpClient實(shí)例的 execute 方法來(lái)執(zhí)行創(chuàng)建好的Method實(shí)例。讀取response。無(wú)論執(zhí)行方法是否成功,釋放連接。對(duì)得到后的內(nèi)容進(jìn)行處理。如圖1所示:
圖1 HttpClient使用步驟
實(shí)現(xiàn)代購(gòu)?fù)焦δ艿母厩疤幔切枰诿看钨?gòu)買(mǎi)商品前,獲取商品在國(guó)外電子商務(wù)網(wǎng)站上最新的數(shù)據(jù)。所以,我們?cè)诿看卧L問(wèn)商品時(shí),利用HttpClient的GET方法,抓取商品所在網(wǎng)站的最新數(shù)據(jù),展示在代購(gòu)網(wǎng)站頁(yè)面,盡可能地保證商品信息的實(shí)時(shí)性。然后,再使用HttpClient的POST方法模擬登錄到國(guó)外電子商務(wù)網(wǎng)站,獲取合法的session,執(zhí)行購(gòu)買(mǎi)行為的同步操作。
在代購(gòu)網(wǎng)站參與網(wǎng)絡(luò)購(gòu)物過(guò)程中,從登錄網(wǎng)站首頁(yè),以及點(diǎn)擊進(jìn)入商品的詳情展示界面,界面顯示的所有商品信息,都是利用數(shù)據(jù)同步技術(shù)將數(shù)據(jù)同步更新到代購(gòu)網(wǎng)站的頁(yè)面。該技術(shù)保證了商品信息的實(shí)時(shí)性,同時(shí)無(wú)需在代購(gòu)網(wǎng)站數(shù)據(jù)庫(kù)存儲(chǔ)所有的商品信息,也無(wú)需定期同步更新本地的數(shù)據(jù)庫(kù),極大地減小了數(shù)據(jù)庫(kù)的開(kāi)銷(xiāo)。
由于代購(gòu)網(wǎng)站每次請(qǐng)求獲取的頁(yè)面信息來(lái)自指定的URL,同時(shí)獲取數(shù)據(jù)的網(wǎng)頁(yè)布局相對(duì)固定,DOM元素不會(huì)頻繁變更,需要獲取的關(guān)鍵字信息比較明確。所以代購(gòu)網(wǎng)站可以使用爬蟲(chóng)技術(shù),高效地抓取指定頁(yè)面中的既定抓取目標(biāo)。
在HttpClient提供的眾多功能組件中,我們使用其實(shí)現(xiàn)的HTTP功能中的GET方法。使用該方法,我們就可以獲取國(guó)外電子商務(wù)網(wǎng)站對(duì)應(yīng)網(wǎng)頁(yè)的所有信息。具體實(shí)現(xiàn)步驟如下:首先要?jiǎng)?chuàng)建一個(gè)HttpClient實(shí)例,然后選擇使用GET方法,傳入待抓取數(shù)據(jù)的URL地址。再執(zhí)行GET方法,即可獲取目標(biāo)頁(yè)面的所有數(shù)據(jù)并釋放鏈接。最后對(duì)獲取的數(shù)據(jù)做有效數(shù)據(jù)的提取即可。具體實(shí)現(xiàn)步驟如圖2所示:
圖2 HttpClient抓取數(shù)據(jù)步驟
通過(guò)以上步驟,便可以獲取所查看商品的最新數(shù)據(jù)。代購(gòu)網(wǎng)站將這部分信息展示給用戶(hù)的同時(shí),也將最新數(shù)據(jù)存儲(chǔ)到本地?cái)?shù)據(jù)庫(kù)中,以支持接下來(lái)的商品購(gòu)買(mǎi)行為。
代購(gòu)?fù)郊夹g(shù)主要是應(yīng)用在通過(guò)代購(gòu)網(wǎng)站購(gòu)買(mǎi)國(guó)外電子商務(wù)網(wǎng)站的商品過(guò)程中。在代購(gòu)網(wǎng)站購(gòu)買(mǎi)商品的操作同在普通的電子商務(wù)網(wǎng)站購(gòu)物相類(lèi)似,其過(guò)程如圖3所示:
圖3 代購(gòu)網(wǎng)站購(gòu)物步驟
首先,使用個(gè)人申請(qǐng)的代購(gòu)網(wǎng)站的賬號(hào),登錄到代購(gòu)網(wǎng)站。從網(wǎng)站首頁(yè)點(diǎn)擊進(jìn)入到不同商品的詳細(xì)信息界面,瀏覽心儀商品的最新信息。然后選擇購(gòu)買(mǎi)商品,代購(gòu)網(wǎng)站顯示購(gòu)買(mǎi)完成的信息。此時(shí),通過(guò)代購(gòu)網(wǎng)站購(gòu)買(mǎi)國(guó)外電子商務(wù)網(wǎng)站商品的操作結(jié)束。
HTTP協(xié)議的主要特點(diǎn)是它是無(wú)狀態(tài)的,也就是連接的有效期只限于當(dāng)前請(qǐng)求,請(qǐng)求內(nèi)容結(jié)束后連接就關(guān)閉了。因此在所有的電子商務(wù)網(wǎng)站服務(wù)授權(quán)問(wèn)題上,并不能通過(guò)一個(gè)普通的URL訪問(wèn)使用網(wǎng)站所提供的功能,而必須要經(jīng)過(guò)注冊(cè)、登錄后才可使用提供的服務(wù)。之后的每次訪問(wèn)請(qǐng)求,均需要驗(yàn)證會(huì)話的權(quán)限。這時(shí)就需要通過(guò)session來(lái)解決此類(lèi)問(wèn)題。目前主流的網(wǎng)站技術(shù)均是通過(guò)session來(lái)處理會(huì)話信息。為了使本地網(wǎng)站能使用其它網(wǎng)站所提供的功能,就要求程序登錄后使用具體功能,這個(gè)過(guò)程就需要自行處理session。
代購(gòu)網(wǎng)站實(shí)現(xiàn)代購(gòu)?fù)焦δ艿牡谝粋€(gè)難題,就是所有的電子網(wǎng)站的購(gòu)物功能都只是對(duì)注冊(cè)用戶(hù)可用的,這種情況下就必須要求使用正確的用戶(hù)名和口令登錄成功后,才可參與網(wǎng)絡(luò)購(gòu)買(mǎi)。因?yàn)镠TTP協(xié)議是無(wú)狀態(tài)的,在這種情況下為了保存用戶(hù)的登錄信息,必須使用到session機(jī)制。例如Java Web服務(wù)器,當(dāng)瀏覽器請(qǐng)求一個(gè)JSP的頁(yè)面時(shí),Web服務(wù)器會(huì)返回一個(gè)名為jsessionid參數(shù),值是一個(gè)長(zhǎng)字符串,這個(gè)字符串值也就是當(dāng)前訪問(wèn)該網(wǎng)站的會(huì)話標(biāo)識(shí),通常使用session存儲(chǔ)。之后瀏覽器每次訪問(wèn)該網(wǎng)站的其他頁(yè)面時(shí),都會(huì)帶上jsessionid這樣的session信息。應(yīng)用服務(wù)器再根據(jù)讀取到的session信息,來(lái)獲取對(duì)應(yīng)的權(quán)限信息。
對(duì)于需要用戶(hù)登錄的網(wǎng)站,在用戶(hù)登錄成功后,網(wǎng)站會(huì)將用戶(hù)資料保存在服務(wù)器的會(huì)話中。這樣,當(dāng)用戶(hù)再訪問(wèn)其他頁(yè)面時(shí),服務(wù)器會(huì)根據(jù)瀏覽器發(fā)送的session信息,讀取
Research and Implementation of Agent Purchase Synchronous Technology Based on HttpClient
Wang Xiaolin
(Rizhao Polytechnic, Rizhao 276800, China)
Internet Shopping agency as a form of e-commerce has developed very mature. People are no longer limited to participating in the online shopping in their own country, but are involving in the purchase of more and more global well-known e-commerce site activities. Due to various reasons, it is difficult to achieve a good result in cross-border online shopping, so the purchasing website that provides purchasing agent services emerged. This paper proposed a synchronization technology for agent purchasing which is purchasing a new model website. First, using HttpClient to crawl pages display data from foreign e-commerce sites to ensure real-time information, reducing the overhead of the system database. Then it uses HttpClient to synchronize every user purchase request to the foreign e-commerce sites which direct the completion of the real purchasing behavior. This model is more automatic, general and stably.
Electronic Commerce; HttpClient; Internet Shopping Agency; Agent Purchase; Synchronous Technology
TP311
A
1007-757X(2014)07-0046-03
王曉琳(1971-),女,日照職業(yè)技術(shù)學(xué)院,講師,碩士,研究方向:計(jì)算機(jī)應(yīng)用技術(shù),計(jì)算機(jī)網(wǎng)絡(luò)及應(yīng)用,日照 276800