Symbian 使用CEComFilter捕获系统HTTP请求
2010-07-21 04:24:00 来源:WEB开发网一、前言
在IE浏览器中,如果想捕获浏览器的HTTP请求,可以通过BHO或者“异步可插协议”技术实现,类似于“迅雷”之类的下载软件,当用户点击一个下载链接会自动弹出。在Symbian OS中有一种技术与“异步可插协议”非常类似,Symbian OS会在HTTP请求中每一步处理过程都通知用户代码,本文将介绍这种技术的实现,并在文章的最后提供在手机上实现下载软件的具体思路。
二、核心ECOM接口类CEComFilter
从类名可以看出,CEComFilter是一个ECOM接口类(关于ECOM方面的编程总结,我会在后面的章节陆续放出),以下列出CEComFilter类的关键代码(SDK中文件cecomfilter.h内):
1 const TUid KUidFilterPluginInterface = {0x101F446D};
2 class CEComFilter : public CBase
3 {
4 public:
5 static CEComFilter* InstallFilterL(RHTTPSession aSession, const TUid aEComFilterUid)
6 {
7 TAny* filterPlugin = REComSession::CreateImplementationL(aEComFilterUid, _FOFF(CEComFilter,iEcomDtorID), &aSession);
8 return REINTERPRET_CAST(CEComFilter*, filterPlugin);
9 }
10 11 static CEComFilter* InstallFilterL(RHTTPSession aSession, const TDesC8& aEComFilterDataType)
12 {
13 TEComResolverParams resolverParams;
14 resolverParams.SetDataType(aEComFilterDataType);
15 16 // This will leave if the plugin is not found17 TAny* filterPlugin = REComSession::CreateImplementationL(KUidFilterPluginInterface,
18 _FOFF(CEComFilter,iEcomDtorID),
19 &aSession, resolverParams);
20 return REINTERPRET_CAST(CEComFilter*, filterPlugin);
21 }
22 23 ~CEComFilter()
24 {
25 REComSession::DestroyedImplementation(iEcomDtorID);
26 }
27 28 private:
29 TUid iEcomDtorID;
30 };
通过代码我们可以分析出以下结论:
第1行,CEComFilter这个ECOM接口类的接口UID(interface_uid)为0x101F446D;
第5行、第11行,该接口提供了能够获得“ECOM实现(指实现了ECOM接口的类)”的两个工厂方法:InstallFilterL的两个重载函数。第一个函数将“ECOM实现”的“实现UID(implementation_uid)”传给默认ECOM决议者,第二个函数将提示参数传给默认ECOM决议者。
Tags:Symbian 使用 CEComFilter
编辑录入:coldstar [复制链接] [打 印]更多精彩
赞助商链接