</pre><p></p><pre name="code" class="objc">关于AFNetworking的 cookies的使用:
默认情况下AFNetWorking支持cookies.比如在调用登陆接口后,会保存cookies.在请求其他接口时,会携带cookies给服务器那边.
这里有个问题,如果要设置请求登陆时不保存cookies,这里可以在AFHTTPSessionManager设置 [self.requestSerializer setHTTPShouldHandleCookies:NO]来实现.
如果项目中要实现自己获取,删除cookies,方法如下:
1.获取登陆请求成功后保存的cookies:
+ (NSString *)cookieValueWithKey:(NSString *)key
{
NSHTTPCookieStorage *sharedHTTPCookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
if ([sharedHTTPCookieStorage cookieAcceptPolicy] != NSHTTPCookieAcceptPolicyAlways) {
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
}
NSArray *cookies = [sharedHTTPCookieStorage cookiesForURL:[NSURL URLWithString:@"http://192...."]];
NSEnumerator *enumerator = [cookies objectEnumerator];
NSHTTPCookie *cookie;
while (cookie = [enumerator nextObject]) {
if ([[cookie name] isEqualToString:key]) {
return [NSString stringWithString:[[cookie value] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
}
}
return nil;
}
2.删除cookies (key所对应的cookies) ///因为cookies保存在NSHTTPCookieStorage.cookies中.这里删除它里边的元素即可.
+ (void)deleteCookieWithKey:(NSString *)key
{
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookies = [NSArray arrayWithArray:[cookieJar cookies]];
for (NSHTTPCookie *cookie in cookies) {
if ([[cookie name] isEqualToString:key]) {
[cookieJar deleteCookie:cookie];
}
}
}