You Are Here:

Community: Wiki

This page was last modified on 4 August 2009, at 13:06.

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

From Forum Nokia Wiki

TSS001388


  • 开发伙伴平台:

S60 3rd Edition FP1, FP2


  • 详细描述

无论手机是否有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,请参考下列实例代码

  • 实例程序

Filter.zip

Related Wiki Articles

No related wiki articles found

Rate This

 
Bookmark this page: DeliciousDiggFacebookGoogleYahooStumbleUponRedditDiigoTechnocratiTwitter  Share this page Share this page Print this Page Print this page Invite a friend Invite a friend
京ICP备05048969号    Email Newsletters Press Terms & Conditions Privacy Policy Sitemap Contact Us © 2009 Nokia