AFNetworking自动保留Cookie

TMa*_*Man 9 session nshttpcookie ios afnetworking

在:这个问题据说AFNetworking在后台自动处理cookie,但在我之前提出的一个问题中,我在登录时在php上保存会话时遇到了麻烦.一旦我关闭(停止调试)在Xcode中)应用程序并在会话中回去了.答案是坚持像这样的cookie来解决问题:

NSData *cookiesData = [[NSUserDefaults standardUserDefaults] objectForKey:@"User"];
if ([cookiesData length] > 0) {
     for (NSHTTPCookie *cookie in [NSKeyedUnarchiver cookiesData]) {
           [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
      }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试做这样的事情时,这给了我一个应用程序崩溃.当我登录时,我将NSUserDefault设置为:

[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"User"];
//Then synthesize
Run Code Online (Sandbox Code Playgroud)

这是错误的使用方法吗?NSHTTPCookieStorage甚至是我的问题吗?谢谢.

clo*_*pez 37

使用以下命令,这是保存和加载适合我的cookie的正确方法:

- (void)saveCookies{

    NSData *cookiesData = [NSKeyedArchiver archivedDataWithRootObject: [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject: cookiesData forKey: @"sessionCookies"];
    [defaults synchronize];

}

- (void)loadCookies{

    NSArray *cookies = [NSKeyedUnarchiver unarchiveObjectWithData: [[NSUserDefaults standardUserDefaults] objectForKey: @"sessionCookies"]];
    NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];

    for (NSHTTPCookie *cookie in cookies){
        [cookieStorage setCookie: cookie];
    }

}
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!