symbian中http的处理
来源:互联网 发布:word流程图制作软件 编辑:程序博客网 时间:2024/05/16 14:14
虽说现在iphone还有android的的手机非常的火,当然了在上面开发应用的人肯定也不少,而symbian被讨论的似乎就少了,巧的是,现在自己还在学习symbian的开发,仔细想想也没有什么了,有过移动开发的经验,(注:工作时间长短不等于经验的多少)换一个平台,应该也可以很快上手的啊。何况自己刚开始的时候,从来也没有搞过symbian的开发,现在不也这样坚持过来了。因为symbian上面的开发确实比java的开发更难入门,看看symbian的sdk与java的jdk就可以有一个大概的了解.所以,无所谓了,symbian上面的开发可以进行,以后换作android的平台,我想也没有多大的问题了,必尽自己以经学习过j2se和j2ee了(越来越感觉到语言的无关性)哈哈,废话就不多说了,鼓励一下自己,继续前进!
symbian上的http开发主要把握五个类,RHTTPSession, RHTTPTransaction, RHTTPHeaders, MHTTPDataSupplier, MHTTPFilter,(这个似乎不是很熟悉了).同样,根据http协议,我们知道先发送一个http request到指定的服务器,顺利的话,服务器得到响应,并返回消息到客户端。
symbian中一个http的大概过程的框架就可以归结为如下:
1.打开一个session会话,RHTTPSession iSession; iSession.OpenL();
2.connection的设置: 设置connection的一些属性
3.打开一个事物, RHTTPTransaction iTransaction;
iTransaction = iSession.OpenTransactionL(uri, *this, method);
第一个参数为TUriParser8类型,具体的url地址, this所对应的类需要继承MHTTPTransactionCallback,以便对请求得到响应时进行回调,第三个参数为请求的方法,如get或post请求.
4.添加请求头,通常在向服务发送请求的时候,我们会在请求里加上一些有用的头信息了,
RHTTPHeaders iHeaders = iTransaction.Request().GetHeaderCollection();
SetHeaders(iHeaders, key, value); //key可以是int型,也可以是字符串型
void CHttpRequest::SetHeaders(RHTTPHeaders aHeaders, TInt aHdrField, const TDesC8& aHdrValue)
{
RStringPool strPool = iSession.StringPool();
RStringF strVal = strPool.OpenFStringL(aHdrValue);
CleanupClosePushL(strVal);
THTTPHdrVal headerVal(strVal);
aHeaders.SetFieldL(strPool.StringF(aHdrField, RHTTPSession::GetTable()), headerVal);
strVal.Close();
CleanupStack::PopAndDestroy();
}
5.提交: iTransaction.SumbitL();
6.响应:MHTTPTransactionCallback的回调函数MHFRunL()和MHFRunError()
MHFRunL(RHTTPTransaction aHttpTransaction, const THTTPEvent &aEvent),里面有EGotResponseHeaders, EGotResponseBodyData, EGotResponseComplete, ESucceeded, EFailed,这几种情况
至此,一个http过程就完成了,当然了得要处理相应的异常了,在实际的过程中,处理异常是相当的重要了,如没有信号,服务器中断,连接超时等等。为了更好地理解symbian的http具体处理过程,建议先把sdk中自带的例子先运行起来,然后再debug,这样也许可以更快地掌握。
另外还有一个想要说明的是,在symbian的http处理过程中, 经常可以看到诸如:RStringPool和RStringF,这里解释一下:
有HTTP String Table一说(也就是http 字符串表),其中官方的说法是:a:Strings in the string table are constructed, copied and freed using RStringPool
,可以看出,在String Table里的用RStringPool;
b:Strings not in the HTTP string table must be opened using RStringPool::OpenStringL()
or RStringPool::OpenFStringL()
and must be closed after use. 不在String Table里的必须用RStringPool的OpenStringL()方法或者是OpenFSringL()方法
- symbian中http的处理
- Symbian HTTP的cookie处理
- Symbian中左右软键的处理
- Symbian中左右软键的处理
- Symbian中左右软键的处理
- Symbian中左右软键的处理
- Symbian中左右软键的处理
- Symbian中左右软键的处理
- Symbian中左右软键的处理
- Symbian中左右软键的处理
- Symbian中左右软键的处理
- Symbian中左右软键的处理
- Symbian中左右软键的处理
- Symbian中左右软键的处理
- Symbian中左右软键的处理
- Symbian中声音处理
- Symbian中声音处理
- symbian http post 数据 中遇到的问题
- 第二篇:简单的基本2D粒子系统(焰火)
- SSH项目和XFire(WebService)整合时报以错误,敬请大家给予指点.........谢谢!
- 阿里巴巴面试算法题目:25匹赛马,5个跑道,也就是说每次有5匹马可以同时比赛。问最少比赛多少次可以知道跑得最快的5匹马
- sprintf用法详解
- Delphi listview 让焦点始终在新输出的焦点上,并自动滚动
- symbian中http的处理
- 我想有自己的生活
- 【CSplitterWnd技巧二】使分割窗口不能改变大小
- iptables端口映射
- 《Asp.net & IIS7 高级编程》读书笔记之 IIS 站点、应用程序、虚拟目录的联系和区别
- [转贴] 扫盲转贴:Rootkit技术发展史
- spintf小实例
- test
- 笔记整理办法