2

私はMonotouchを使用しており、将来のリクエストに使用するために、シミュレータの共有ストレージにNsHttpCookieオブジェクトを保存しようとしています。NSHttpCookieStorage.SharedStorage.SetCookie (NSHttpCookie)メソッドを使用しています。

ただし、これを行った後、(を介して)Cookieを取得しようとすると、CookieがNSHttpCookieStorage.SharedStorage.Cookies0個表示されます。

詳細-システム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);
    }

何が間違っているのでしょうか?どうもありがとう!

4

1 に答える 1

2

NSHttpCookieのようなコードを回避するために使用できる.NET インスタンスを受け入れるコンストラクターがあります。System.Net.CookieconvertSystemCookieToNsCookie

発生する可能性NSHttpCookieがあるのは、 from の作成中にエラーが発生しNSMutableDictionary、空のハンドル ( IntPtr.Zero) が返され、共有ストレージに追加されないことです。このような問題を回避するために、ヘルパー .ctor が追加されました。

于 2013-03-19T17:31:37.097 に答える