xamarin.ios - 无法将 cookie 添加到 NSHttpCookieStorage.SharedStorage

标签 xamarin.ios

我正在使用 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);
    }

知道我做错了什么吗? 非常感谢!

最佳答案

NSHttpCookieconstructor接受 .NET System.Net.Cookie 实例,该实例可用于避免 convertSystemCookieToNsCookie 等代码。

可能发生的情况是,从 NSMutableDictionary 创建 NSHttpCookie 时发生错误将返回空句柄 (IntPtr.Zero ),并且不会添加到共享存储中。添加了助手 .ctor 来避免此类问题。

关于xamarin.ios - 无法将 cookie 添加到 NSHttpCookieStorage.SharedStorage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15492894/

相关文章:

iphone - 单点触摸中的异步和等待

ipad - Monotouch内存限制崩溃

c# - Xamarin.iOS 中的静音

c# - 如何在 MonoTouch 中实现 IBOutlets?

ios - 通过 Mono 框架在 iOS 应用程序中使用现有的 DLL

ios - Xamarin 窗体 : How to change background from gray on selected item in listview, iOS

ios - MvvmCross Xamarin.iOS 绑定(bind) : How does MVVM cross know what property to bind against?

ios - MVVMCross 绑定(bind)属性在 iOS 模拟器中工作正常,但在设备上失败

c# - C# 如何让文本显示在按钮上?

ios - 如何在不构造 UILabel 的情况下找出给定集合中哪个 UILabel 具有最大宽度?