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,请参考下列实例代码
No related wiki articles found