《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之74---BREW 中的HTTP 开发...

本文介绍了IWeb接口的基本使用方法,包括如何创建实例、初始化回调函数、发送GET请求等,并提供了具体的代码示例。同时,还讲解了如何设置Web选项来配置IWeb的行为,如保持连接激活状态等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;

}

WebOptsWeb 选项)用于操作 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.

IWEBUTIL_UrlEncode(pMe->m_pIWebUtil,

(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头有效时,这一特性才能正常工作。对于远端,如果需要知道何时调整读取的时候或者需要知道内容长度的时候,连接都需要被关闭。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值