×
Namespaces

Variants
Actions

使用HTTP过滤插件模拟HTTP回应

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

代码示例
源文件: Media:Filter.zip

兼容于
文章
翻译:
hoolee
最后由 hamishwillee 在 14 Sep 2012 编辑
  • 详细描述

无论手机是否有HTTP会话,HTTP框架和客户端之间的HTTP过滤插件都会加载。这个插件接收所有在客户端和HTTP框架间的传送事件,HTTP框架可以用来管理他们。甚至可以停止传送使用假的HTTP回应客户端


  • 解决方案

一个HTTP传送封装了一个HTTP请求和回应。下列代码演示了如何取消从客户端获得的HTTP请求。

iTransaction = aTransaction;    //take a copy of the transaction 
aTransaction.Cancel(iFilterHandle); //cancel the transaction


传送的回应对象可以设置为我们自己的head和body,然后使用RHTTPTransaction::SendEventL()发送改回应事件。该实例代码

如下:

RHTTPResponse resp = iTransaction.Response();
//Sending response headers
RHTTPHeaders hdrs = resp.GetHeaderCollection();
RStringF valStr = iSession.StringPool().OpenFStringL( KContenttype );
THTTPHdrVal val( valStr );
hdrs.SetFieldL( iSession.StringPool().StringF( HTTP::EContentType,
RHTTPSession::GetTable()), val );
RStringF okStr = iSession.StringPool().OpenFStringL(KOk);
iTransaction.Response().SetStatusCode(200);
iTransaction.Response().SetStatusText(okStr);
iTransaction.SendEventL(THTTPEvent::EGotResponseHeaders, THTTPEvent::EIncoming, iFilterHandle);
valStr.Close();
okStr.Close();

发送回应body

resp.SetBody(*this);			
iTransaction.SendEventL(THTTPEvent::EGotResponseBodyData, THTTPEvent::EIncoming, iFilterHandle);


发送完整的回应事件

iTransaction.SendEventL(THTTPEvent::EResponseComplete,  THTTPEvent::EIncoming, iFilterHandle);


发送传送成功事件

iTransaction.SendEventL(THTTPEvent::ESucceeded, THTTPEvent::EIncoming, iFilterHandle);


请注意这些事件必须要按上述顺序依次执行才会成功


注意:HTTP filter需要额外设置的能力,包括NetworkControl,请参考下列实例代码

  • 实例程序

Media:Filter.zip

This page was last modified on 14 September 2012, at 08:55.
93 page views in the last 30 days.
×