Symbian 使用CEComFilter捕获系统HTTP请求
2010-07-21 04:24:00 来源:WEB开发网6 IMPORT_C virtual void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent);
7 IMPORT_C virtual void MHFSessionRunL(const THTTPSessionEvent& aEvent);
8 IMPORT_C virtual TInt MHFRunError(TInt aError, RHTTPTransaction aTransaction,const THTTPEvent& aEvent);
9 IMPORT_C virtual TInt MHFSessionRunError(TInt aError, const THTTPSessionEvent& aEvent);
10 };
看到这里大家肯定会想起MHTTPTransactionCallback类,此类用在 RHTTPSession::OpenTransactionL中,为HTTP请求的回调,我们使用 RHTTPSession::OpenTransactionL打开一个连接后,往往会在MHFRunL方法中获取HTTP返回的字节、检查 StatusCode、检查HTTP头信息等。而MHTTPFilter也提供MHFRunL方法,我们可以再此方法中对系统任意一个HTTP请求进行捕获,做相应的检查和处理;
另外,MHTTPFilter类中的方法都不是纯虚函数,我们的类中可以有选择的进行继承;
aEvent:监视器所监视的HTTP请求事件类型,可以监视所有时间或者只针对Transaction Event、Session Event进行监视,具体请参看SDK中“THTTPEvent”类的文档;
aHeaders:HTTP接收到指定的头将触发事件;
aStatusCode:HTTP接收到指定的状态码将触发事件;
aPosition:监视器所在“位置”,在RHTTPSession完成一个HTTP请求时,会分为几个步骤:处理协议、处理缓存、处理状态码、处理UA等,aPosition所代表的“位置”指的就是把监视器插入哪个步骤中进行监视,具体数值及详细解释请参看 MHTTPFilter::TPositions枚举值的说明;
aName:自定义的监视器的名字。
根据以上分析,我们可以通过实现CEComFilter接口完成一个Demo:只要系统提交了HTTP进行Url的请求,就弹出一个全局消息框,显示HTTP所请求的Url地址。
四、实现CEComFilter接口
完整源代码请点击此处下载
1、实现接口的类名叫CFelixHttpFilter,定义如下:
1 class CFelixHttpFilter: public CEComFilter,private MHTTPFilter
2 {
3 public:
4 ~CFelixHttpFilter();
5 static CFelixHttpFilter* NewL(TAny* aHttpSession);
6 static CFelixHttpFilter* NewLC(TAny* aHttpSession);
Tags:Symbian 使用 CEComFilter
编辑录入:coldstar [复制链接] [打 印]更多精彩
赞助商链接