AFNetworking应坚持饼干自动(AFNetworking Persisting Cookie

2019-07-18 09:01发布

在: 这个问题据说AFNetworking发生在后台自动护理饼干,但在以前 ,我提出的问题,我遇到了麻烦,保持这是在PHP做,当我登录的服务器上的会话一旦我关闭(停在Xcode调试)应用程序,然后回到会议不见了。 答案是坚持饼干,像这样来解决这个问题:

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

这给了我一个应用程序崩溃,当我尝试做这样的事情。 当我登录我设置NSUserDefault就像这样:

[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"User"];
//Then synthesize

这是使用这个错误的方式? 是NSHTTPCookieStorage甚至我的问题? 谢谢。

Answer 1:

使用以下,这是为了保存和加载为我工作饼干正确的方法:

- (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];
    }

}

希望能帮助到你!



文章来源: AFNetworking Persisting Cookies Automatically