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

Symbian 使用CEComFilter捕获系统HTTP请求

 2010-07-21 04:24:00 来源:WEB开发网   
核心提示:aHandle);6 IMPORT_C virtual void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent);7 IMPORT_C virtual void MHFSessionRunL(const THTTPSessionEvent
aHandle);

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);

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

Tags:Symbian 使用 CEComFilter

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