如何获取cookie并将其用于POST(iOS)等其他请求?

时间:2012-09-25 03:21:41

标签: iphone ios cookies

我的previous question是关于我每次都要登录来发布链接或上传图片等网络服务的问题。菲利普回答说我必须为每个请求使用cookie而不是登录过程。我找到了获取cookie的方法:

- (void)getCookies {

    NSHTTPURLResponse * response;
    NSError * error;
    NSMutableURLRequest *request;

    request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://MyWebsite.com/login.php"]
                                            cachePolicy:NSURLRequestReloadIgnoringCacheData
                                        timeoutInterval:120];
    NSData * data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

    NSLog(@"%@", [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]);
    NSArray * all = [NSHTTPCookie cookiesWithResponseHeaderFields:[response allHeaderFields] forURL:[NSURL URLWithString:@"http://MyWebsite.com/login.php"]];
    NSLog(@"%d", all.count);

    for (NSHTTPCookie *cookie in all) {
        NSLog(@"Name: %@ : Value: %@", cookie.name, cookie.value);
        NSLog(@"Comment: %@ : CommentURL: %@", cookie.comment, cookie.commentURL);
        NSLog(@"Domain: %@ : ExpiresDate: %@", cookie.domain, cookie.expiresDate);
        NSLog(@"isHTTPOnly: %c : isSecure: %c", cookie.isHTTPOnly, cookie.isSecure);
        NSLog(@"isSessionOnly: %c : path: %@", cookie.isSessionOnly, cookie.path);
        NSLog(@"portList: %@ : properties: %@", cookie.portList, cookie.properties);
        NSLog(@"version: %u", cookie.version);
    }
} 

我还发现此代码使用这些cookie,但我不确定如何使用它:

[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookies];

这是我的POST方法,我使用的是RestKit API:

- (IBAction)addLinkPressed:(UIButton *)sender {

        [RKClient clientWithBaseURLString:@"http://MyWebsite.com"];

        NSDictionary* params = [NSDictionary dictionaryWithObjectsAndKeys:
                                self.linkField.text, @"url",
                                self.linkTitleField.text, @"title",
                                self.linkSummaryField.text, @"summary",
                                nil];

        RKRequest *request = [[RKClient sharedClient] post:@"/send_link.php" params:params delegate:self];
        [request setUserData:@"sendLink"];   
}

问题:我应该存储哪些Cookie属性以用于登录信息?我应该将其放在我的代码中?

1 个答案:

答案 0 :(得分:0)

[request setHTTPMethod:@"POST"];