私の 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 :\
誰もこれを経験したことがありますか?