版權聲明:本文為半吊子子全棧工匠(wireless_com,同公衆号)原創文章,未經允許不得轉載。 https://blog.csdn.net/wireless_com/article/details/6510398
IWeb接口的主要目的是為應用産生一個HTTP請求,對檔案的請求使用HTTP中的“Get”方法,上載資料是通過HTTP的“Post”方法實作的 。IWEB 能夠管理自己的連接配接和sockets,使用IWEB_GetResponse 函數就可以啟動一個 web 通路。
請求網際網路上的一個檔案示例如下:
// Create IWeb instance
ISHELL_CreateInstance(pMe->a.m_pIShell, AEECLSID_WEB, (void **)&pMe->m_pIWeb);
// Initialize the callback to WebReadCB
CALLBACK_Init(&pMe->m_Callback, WebReadCB, pMe);
// Request IWEB to fetch the file
IWEB_GetResponse(pMe->m_pIWeb,
(pMe->m_pIWeb, &pMe->m_pIWebResp, &pMe->m_Callback,
"
http://www.qualcomm.com", WEBOPT_HANDLERDATA, pMe,
WEBOPT_STATUSHANDLER, WebStatusNotification,
WEBOPT_METHOD, "GET",WEBOPT_END));
其中WebReadCB()為獲得伺服器相應内容的回調函數,參考實作如下:
static void WebReadCB(void* cxt)
{
…
// Get information about the response
WebRespInfo* pWebRespInfo = IWEBRESP_GetInfo(pMe->m_pIWebResp);
// the body of the response is contained in the ISOURCE within
ISource* pISource = pWebRespInfo->pisMessage;
}
WebOpts(Web 選項)用于操作 IWeb 配置選項。IWebOpts代表選項堆棧或清單,這些選項可以為單值或多值,且不強制單值或多值選項的語義。選項堆棧的通路按添加時的順序進行,可以通過IWebOpt設定,也可以Web請求中直接指定。
PFNWEBHEADER是用于擷取HTTP header資訊的回調函數原型。它将作為 WEBOPT_HEADERHANDLER傳遞給IWEB_AddOpt() 或 IWEB_GetResponse()。PFNWEBSTATUS是擷取請求狀态的回調原型,将作為 IWEBOPT_STATUSHANDLER 傳遞給IWEB_AddOpt() 或 IWEB_GetResponse()。
如果URL中含有一些關鍵字的話,需要先對URL進行編碼,否則無法正确解析,其示例如下:
// Determine what the length of the output buffer needs to be
IWEBUTIL_UrlEncode(pMe->m_pIWebUtil,
(const char *)(buf), // buffer containing the suffix of URL with reserved chars
&nDataLen, // number of characters to be encoded
NULL, // if NULL, method calculatessize of buffer needed
&pMe->m_dwContentLength // contains the length of the buffer required
);
// Allocate space to hold the encoded string
if(pMe->m_dwContentLength)
pMe->m_szData = (char*) MALLOC(pMe->m_dwContentLength);// Encode the string.
(const char *)(buf), &nDataLen,pMe->m_szData, &pMe->m_dwContentLength);
IWEB 接口可以使HTTP連接配接一直處于激活狀态,而且這是IWeb接口的預設狀态,通過使用Web選項WEBREQUEST_NOKEEPALIVE 和 WEBOPT_FLAG可以禁用這一功能。其中保持激活狀态依賴于Content-Length 的HTTP頭,隻有當“Content-Length: xxx” 的HTTP頭有效時,這一特性才能正常工作。對于遠端,如果需要知道何時調整讀取的時候或者需要知道内容長度的時候,連接配接都需要被關閉。
本文來自CSDN部落格,轉載請标明出處:
http://blog.csdn.net/wireless_com/archive/2010/09/29/5914105.aspx