機(jī)緣巧合,在我認(rèn)識(shí)brew一周后,需要在Brew上使用到Http,用到了IWeb接口,備述如下:
成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供潯陽企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站制作、成都做網(wǎng)站、H5響應(yīng)式網(wǎng)站、小程序制作等業(yè)務(wù)。10年已為潯陽眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。1.調(diào)用IWEB_GetResponse
先看代碼如下:
CALLBACK_Init(&pMe->IWebRespCallback, IWebResponseCallbackNotifyFunc, pMe);
IWEB_GetResponse(pMe->pIWeb,
(pMe->pIWeb, &pMe->pIWebResp, &pMe->IWebRespCallback,
url,
WEBOPT_HANDLERDATA, pMe,
WEBOPT_STATUSHANDLER, IWebStatusNotify,
WEBOPT_METHOD, "GET",
WEBOPT_END));
IWEB_GetResponse接口需要一個(gè)AEECallback,所以需要調(diào)用CALLBACK_Init設(shè)置該callback,這個(gè) CALLBACK_Init其實(shí)就是把后面兩個(gè)參數(shù)填充到callback這個(gè)結(jié)構(gòu)中,它的后兩個(gè)參數(shù),一個(gè)是具體的callback函數(shù),一個(gè)是用于傳 給callback的userdata。
IWEB_GetResponse其實(shí)是個(gè)宏,前面幾個(gè)參數(shù)分別是
IWeb *pIWeb, 這個(gè)是IWeb實(shí)例
IWebResp **ppiwresp,這個(gè)是一個(gè)傳出參數(shù),后面接收數(shù)據(jù)全靠這哥們
AEECallback *pcb,這個(gè)是剛才設(shè)置的回調(diào)
在后面幾個(gè)宏比較有意思,實(shí)際上,他們都是成對(duì)出現(xiàn)的,WEBOPT_XXX一系列的宏都用于指定HTTP的行為,有特點(diǎn)的含義
WEBOPT_HANDLERDATA 指定userdata,也就是指定它后面的參數(shù)是個(gè)userdata,用在后面callback中
WEBOPT_STATUSHANDLER,指定一個(gè)status callback,IWebStatusNotify就是這個(gè)callback
WEBOPT_METHOD,指定http的method
2.設(shè)置WebRespInfo
調(diào)用IWEB_GetResponse后,會(huì)有一個(gè)傳出參數(shù)IWebResp,在Brew認(rèn)為ready的時(shí)候,會(huì)回調(diào)我們?cè)贗WEB_GetResponse中設(shè)置的callback,
在callback中調(diào)用IWEBRESP_GetInfo可以從中取出一個(gè)WebRespInfo,這個(gè)info很重要,因?yàn)樗锩嬗幸粋€(gè)ISource,有了這個(gè)ISource我們就可以異步得到數(shù)據(jù)了
上代碼:
WebRespInfo* pWebRespInfo = IWEBRESP_GetInfo(pMe->pIWebResp);
if(pWebRespInfo)
{
// the body of the response is contained in the ISOURCE within
pMe->pIWebSource = pWebRespInfo->pisMessage;
//AEECallback callback;
CALLBACK_Init(&(pMe->IWebSourceCallback), IWebSourceCallbackNotifyFunc, pMe);
ISource_Readable(pMe->pIWebSource, &(pMe->IWebSourceCallback));
}
可以看到,為了從ISource里取數(shù)據(jù),有設(shè)置一個(gè)callback,IWebSourceCallbackNotifyFunc,在這個(gè)callback中,我們就可以調(diào)用ISource_Read獲取數(shù)據(jù)了
特別需要說明的是,ISource_Read調(diào)用完了以后,需要再次調(diào)用ISource_Readable,設(shè)置callback,否則下次callback就不會(huì)來了
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。