我正在使用 Monotouch,并尝试将 NsHttpCookie 对象存储在模拟器的共享存储中,以用于我将来的请求。 我正在使用 NSHttpCookieStorage.SharedStorage.SetCookie (NSHttpCookie) 方法。
但是,在我这样做之后,当我尝试检索 cookie(通过 NSHttpCookieStorage.SharedStorage.Cookies
)时,我看到 0 个 cookie。
更详细地说 - 我正在将系统 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 cookie。 我在任何地方都没有看到任何异常(exception)。 这是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);
}
知道我做错了什么吗? 非常感谢!
最佳答案
NSHttpCookie
有 constructor接受 .NET System.Net.Cookie
实例,该实例可用于避免 convertSystemCookieToNsCookie
等代码。
可能发生的情况是,从 NSMutableDictionary
创建 NSHttpCookie
时发生错误将返回空句柄 (IntPtr.Zero
),并且不会添加到共享存储中。添加了助手 .ctor 来避免此类问题。
关于xamarin.ios - 无法将 cookie 添加到 NSHttpCookieStorage.SharedStorage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15492894/