WEB开发网
开发学院手机开发Symbian 开发 Symbian 使用CEComFilter捕获系统HTTP请求 阅读

Symbian 使用CEComFilter捕获系统HTTP请求

 2010-07-21 04:24:00 来源:WEB开发网   
核心提示:一、前言在IE浏览器中,如果想捕获浏览器的HTTP请求,Symbian 使用CEComFilter捕获系统HTTP请求,可以通过BHO或者“异步可插协议”技术实现,类似于“迅雷”之类的下载软件,该接口提供了能够获得“ECOM实现(指实现了ECOM接口的类)”的两个工厂方法:InstallFilterL的两个重载函数,第

一、前言

在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决议者。

1 2 3 4 5 6  下一页

Tags:Symbian 使用 CEComFilter

编辑录入:coldstar [复制链接] [打 印]
赞助商链接