用Symbian中读多Cookie值(Reading Multiple Http Cookies using Symbian C++)

本文介绍了一种在Symbian系统中从HTTP事务获取多个Cookie的方法。该方法适用于S60 3rd Edition FP1和FP2。文章提供了具体的C++代码示例,演示了如何遍历HTTP头部集合并解析出每个Cookie的名字和值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Overview

Symbian cookies are stored in the http header collection like other header information, but can be tricky to retrieve. Attempting to gather them the standard way returns a single item whose name is "Set-cookie" and whose value is "Cookie". The following code snippet shows how to get multiple cookies from an HTTP transaction. The code is tested with S60 3rd Edition FP1 and FP2.

Symbian的cookie保存在http的header集中的,和其它的header信息一样,但是可以取值可能会有麻烦。企图收集他们的标准方法是返圆一个命名为"Set-cookie"的单独项,他的值是"Cookie".下面的代码片断展示了怎样从HTTP transaction中取多个cookie的办法。这个代码在S60 3版的FP1和FP2中都测试过。(我在第三版下也测试通过)。

The S60 implementation stores the cookie in a private folder of the Cookie Manager component. If a 3rd party wants to access these cookie files directly, AllFiles capability is required.

S60中实现存储cookie到Cookie管理组件的private文件夹中,如果第三方想要直接的访问这些cookie文件,那么他需要所有的文件权限。

void loadFromTransaction(RHTTPTransaction& aTrans) { RHTTPResponse resp = aTrans.Response(); RStringPool strP = aTrans.Session().StringPool(); RHTTPHeaders headers = resp.GetHeaderCollection(); THTTPHdrFieldIter it = headers.Fields(); while (it.AtEnd() == EFalse) { RStringTokenF fieldName = it(); RStringF fieldNameStr = strP.StringF(fieldName); THTTPHdrVal fieldVal; if (headers.GetField(fieldNameStr, 0, fieldVal) == KErrNone) { RStringF wwwCookie = strP.StringF(HTTP::ESetCookie, RHTTPSession::GetTable()); if (fieldNameStr == wwwCookie) { RStringF nameValStr; RStringF valueValStr; // Check the cookie name and value RStringF name = strP.StringF(HTTP::ECookieName, RHTTPSession::GetTable()); RStringF value = strP.StringF(HTTP::ECookieValue, RHTTPSession::GetTable()); TInt numCookies = headers.FieldPartsL(wwwCookie); THTTPHdrVal nameVal, valueVal; for (int i = 0; i < numCookies; i++) { string nameFromCookie = "", valueFromCookie = ""; if (headers.GetParam(wwwCookie, name, nameVal, i) == KErrNone) { RStringF strF; RString str; if (nameVal.Type() == THTTPHdrVal::KStrFVal) { strF = nameVal.StrF(); nameValStr = strP.StringF(strF); // this is the cookie's name } else if (nameVal.Type() == THTTPHdrVal::KStrVal) { str = nameVal.Str(); // this is the cookie's name } } if (headers.GetParam(wwwCookie, value, valueVal, i) == KErrNone) { RStringF strF; RString str; if (valueVal.Type() == THTTPHdrVal::KStrFVal) { strF = valueVal.StrF(); valueValStr = strP.StringF(strF); // this is the cookie's value } else if (valueVal.Type() == THTTPHdrVal::KStrVal) { str = valueVal.Str(); // this is the cookie's value } } /*** * do something with the name and value, such as storing them * locally or in a file ***/ } // end for loop } } ++it; } // end while } // end loadFromTransaction

原文地址:http://wiki.forum.nokia.com/index.php/Reading_Multiple_Http_Cookies_using_Symbian_C%2B%2B

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值