×
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.
119 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×