Symbian 中的 Http 开发详解
2010-03-24 17:22:00 来源:WEB开发网1 打开一个会话
Http客户端会话由声明一个RHttpSession对象并调用它的OpenL()方法开始。
RHTTPSession iSession;
iSession.OpenL();
2 创建一个事务
要创建一个新的事务,客户端必须指定URI、HTTP请求方法和一个用于接收事务处理期间的事件的callback对象,该回调对象必须继承自 MHTTPTransactionCallBack接口。RHTTPTransaction句柄由唯一地定义新事物的会话返回。
void CHttpClient::InvokeHttpMethodL(const TDesC8& aUri, RStringF aMethod)
{
...
TUriParser8 uri;
uri.Parse(aUri);
RHTTPTransaction trans = iSession.OpenTransactionL(uri, *iTransObs, aMethod);
...
};
OpenTransactionL()的第二个参数表示回调对象。
3 设置请求头
在打开了事务之后,如果有需要,客户端就要设置请求头。但是,对于简单事务来说,请求头的使用是可选的,因为HTTP/1.1的请求头会被自动生成。
可以使用RHTTPHeaders类访问与事务请求或事务响应相关的头部。该句柄是从事务相关的RHTTPRequest或 RHTTPResponse对象中取得的。
RHTTPHeaders hdr = trans.Request().GetHeaderCollection();
// Add headers appropriate to all methods
SetHeaderL(hdr, HTTP::EUserAgent, KUserAgent);
SetHeaderL(hdr, HTTP::EAccept, KAccept);
...
void CHttpClient::SetHeaderL(RHTTPHeaders aHeaders, TInt aHdrField, const TDesC8& aHdrValue)
{
RStringF valStr = iSession.StringPool().OpenFStringL(aHdrValue);
THTTPHdrVal val(valStr);
aHeaders.SetFieldL(iSession.StringPool().StringF(aHdrField), val);
valStr.Close();
}
头部域类型是使用HTTP名字空间的枚举来指定,如:HTTP::EUserAgent。该类用于拥有头部域的值:THTTPHdrVal,就像一个C++联合类型,在其中它可以拥有不同的数据类型。
4 启动事务
设置了头部域后,一个不带请求体的简单事务就可以立即启动了。但这只是适用于诸如GET、HEAD和TRACE等HTTP方法的情况。而不适用于另外一些请求中包括主体的HTTP方法,如POST。客户端向其发送请求体数据的数据提供者必须在事务启动之前关联到事务上。
- ››开发Android 日历教程
- ››开发学院总结 Win 8实用技巧大全
- ››开发学院原创教程:把win8的IE10放桌面上方法(非...
- ››HttpHandler生成随机码、验证码
- ››Http 403错误重现实验及解决方法
- ››开发者眼中的Windows Phone和Android
- ››Symbian S60 SocketConnection参数
- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››Symbian乏力:2010年诺基亚悲情大事记
- ››Symbian三大升级开启2011年新战略
- ››Symbian/Android/iOS/WM安装包对比
- ››Symbian一个活动对象的测试例子
更多精彩
赞助商链接