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

Symbian 使用CEComFilter捕获系统HTTP请求

 2010-07-21 04:24:00 来源:WEB开发网   
核心提示:注意:两个工厂方法都会将RHTTPSession http会话的指针通过ECOM决议者创建“ECOM实现”时传入“ECOM实现”的构造函数,系统创建了HTTP会话后,Symbian 使用CEComFilter捕获系统HTTP请求(2),会遍历所有实现了CEComFilter接口的ECOM实现UID(implementa

注意:两个工厂方法都会将RHTTPSession http会话的指针通过ECOM决议者创建“ECOM实现”时传入“ECOM实现”的构造函数。

系统创建了HTTP会话后,会遍历所有实现了CEComFilter接口的ECOM实现UID(implementation_uid),使用工厂方法将ECOM实现实例化,同时传入HTTP会话(RHTTPSession);这样,我们的CEComFilter的实现就能够针对此HTTP会话进行相关监控。

在此,系统只知道interface_uid,如何通过interface_uid知道有哪些implementation_uid的实现呢?很简单,使用如下函数即可获得:

class REComSession : public RSessionBase

{

...

IMPORT_C static void ListImplementationsL(TUid aInterfaceUid, RImplInfoPtrArray& aImplInfoArray);

...

}

具体流程如下(模拟实现):

image

三、如何实现CEComFilter接口

实现CEComFilter,其实就是实现一个普通的ECOM接口,步骤非常简单,在此不再说明具体步骤。重点在第5步:如何对传入的RHTTPSession进行监控。

SDK中关于RHTTPSession::FilterCollection()方法的解释:

Accessor for the filter collection. Note that the filter collection can't be edited after the first transaction has been created.

注意:如果已经在RHTTPSession上创建了RHTTPTransaction,则不能对Filter Collection进行修改。

此方法返回类型RHTTPFilterCollection,使用RHTTPFilterCollection::AddFilterL的重载函数向RHTTPSession的监视器队列中添加“监视器”,用于捕获HTTP请求信息:

IMPORT_C void AddFilterL(MHTTPFilter& aFilter, THTTPEvent aEvent, RStringF aHeader, TInt aStatusCode,TInt aPosition, RStringF aName);

参数说明:

aFilter:类型为MHTTPFilter的引用,MHTTPFilter的定义为:

1 class MHTTPFilter

2 {

3 public:

4 IMPORT_C virtual void MHFUnload(RHTTPSession aSession, THTTPFilterHandle aHandle);

5 IMPORT_C virtual void MHFLoad(RHTTPSession aSession, THTTPFilterHandle

上一页  1 2 3 4 5 6  下一页

Tags:Symbian 使用 CEComFilter

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