我正在使用Monotouch,并试图在我的模拟器的共享存储中存储一个NsHttpCookie对象,以供我将来的请求使用。我使用的是NSHttpCookieStorage.SharedStorage.SetCookie (NSHttpCookie)方法。
但是,完成此操作后,当我尝试检索cookies (通过NSHttpCookieStorage.SharedStorage.Cookies)时,我看到0个cookies。
更详细地说,我正在将系统cookie转换为NSHttpCookie。在那之后,我试着把这个写下来
NSHttpCookieStorage.SharedStorage.AcceptPolicy = NSHttpCookieAcceptPolicy.Always;
NSHttpCookieStorage.SharedStorage.SetCookie (
convertSystemCookieToNsCookie(resp.Cookies[0])); 当我尝试用以下命令检索cookie时
NSHttpCookie[] cookies = NSHttpCookieStorage.SharedStorage.Cookies;
Console.Out.WriteLine ("Found cookies " + cookies.Length);上面写着0曲奇。我在任何地方都没有看到任何异常。这是convertSystemCookieToNsCookie方法-
private NSHttpCookie convertSystemCookieToNsCookie(Cookie cookie) {
var properties = new NSMutableDictionary ();
properties.Add (NSHttpCookie.KeyOriginURL, new NSString(cookie.Domain));
properties.Add (NSHttpCookie.KeyName, new NSString(cookie.Name));
properties.Add (NSHttpCookie.KeyValue, new NSString(cookie.Value));
properties.Add (NSHttpCookie.KeyPath, new NSString (cookie.Path));
NSDate cookieDate = NSDate.FromTimeIntervalSinceReferenceDate ((
cookie.Expires - (new DateTime (2001, 1, 1, 0, 0, 0))).TotalSeconds);
properties.Add (NSHttpCookie.KeyExpires, cookieDate);
return new NSHttpCookie (properties);
}你知道我会做错什么吗?非常感谢!
发布于 2013-03-20 01:31:37
NSHttpCookie具有接受.NET System.Net.Cookie实例的constructor,该实例可用于避免像convertSystemCookieToNsCookie这样的代码。
可能发生的情况是,从NSMutableDictionary创建NSHttpCookie时出现错误,将返回一个空句柄(IntPtr.Zero),并且该句柄不会添加到共享存储中。添加帮助器.ctor就是为了避免此类问题。
https://stackoverflow.com/questions/15492894
复制相似问题