3

私の iPhone アプリでクライアントをログアウトするには、特定の URL の Cookie を削除する必要があります。

コーディングは簡単で、AFNetworking の @matt が簡単なコード例を提供してくれました。

- (void)cleanCookies
{
    NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:[NSURL URLWithString:kBaseURL]];
    for (NSHTTPCookie *cookie in cookies)
    {
        [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
    }
}

それは簡単なビットです。ここで、単体テストで、コードがこの baseURL に関連する Cookie を削除していることを証明したいと思います。

質問、NSHTTPCookie を NSHTTPCookieStorage に追加して、取得できるようにするにはどうすればよいですか

NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:[NSURL URLWithString:kBaseURL]];

私はこのようにクッキーを追加しようとしています:

NSMutableDictionary *newCookieDict = [NSMutableDictionary dictionaryWithCapacity:6];
            [newCookieDict setObject:@"cookiie" forKey:NSHTTPCookieName];
            [newCookieDict setObject:@"/api" forKey:NSHTTPCookiePath];
            [newCookieDict setObject:@"2020-10-26 00:00:00 -0700" forKey:NSHTTPCookieExpires];
            [newCookieDict setObject:kSkyStoreBaseURL forKey:NSHTTPCookieOriginURL];
            [newCookieDict setObject:kSkyStoreBaseURL forKey:NSHTTPCookieDomain];
            [newCookieDict setObject:@"value" forKey:NSHTTPCookieValue];

            // Create a new cookie
            NSHTTPCookie *newCookie = [NSHTTPCookie cookieWithProperties:newCookieDict];

            // Add the new cookie
            NSHTTPCookieStorage *cookiesStore = [NSHTTPCookieStorage sharedHTTPCookieStorage];
            [cookiesStore setCookies:@[newCookie] forURL:[NSURL URLWithString:kSkyStoreBaseURL] mainDocumentURL:nil];

Cookie は正しく追加されますが、指定された baseURL に対して呼び出すと nil 値が返されます!

NSArray *cookies = [cookiesStore cookiesForURL:[NSURL URLWithString:kSkyStoreBaseURL]];

cookies = nil :\

誰もこれを経験したことがありますか?

4

0 に答える 0