如何在AFNetworking 2.0+中使用AFHTTPRequestOperationManager使用cookie?

时间:2014-02-02 01:41:08

标签: ios objective-c afnetworking

众所周知,AFNetworking 2.0+中的 AFHTTPSessionManager 支持cookie。

但AFNetworking 2.0+中的 AFHTTPRequestOperationManager 是否可以支持Cookie?

1 个答案:

答案 0 :(得分:10)

是。 AFNetworking使用基础URL加载系统,它可以开箱即用地处理cookie。

您可以配置NSMutableURLRequest的setHTTPShouldHandleCookies并使用NSHTTPCookieStorage来存储它们。

在Objective-C中:

NSArray *cookieStorage = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:url];
NSDictionary *cookieHeaders = [NSHTTPCookie requestHeaderFieldsWithCookies:cookieStorage];
NSMutableURLRequest *request = [myRequestSerializer requestWith…];
for (NSString *key in cookieHeaders) {
    [request addValue:cookieHeaders[key] forHTTPHeaderField:key];
}

在斯威夫特:

var request = NSMutableURLRequest() // you can use an AFNetworking Request Serializer to create this

if let cookieStorage = NSHTTPCookieStorage.sharedHTTPCookieStorage().cookiesForURL(url) {
    for (headerField, cookie) in NSHTTPCookie.requestHeaderFieldsWithCookies(cookieStorage) {
        request.addValue(cookie, forHTTPHeaderField: headerField)
    }
}