use*_*719 10 cookies ios afnetworking
有人可以告诉我如何使用AFNetworking for iOS保存cookie FOREVER吗?我正在使用ios7,但我认为这不重要吗?
用例是在成功通过Web服务进行身份验证后,它为我提供了两个cookie,我需要传递每个请求.这些cookie永远不会过期,或者从现在开始过期.只要我有每个HTTPS请求的cookie,用户就不必再次登录.我知道AFNetworking会自动保留cookie,直到您退出应用程序,但我需要cookie一直持续到用户从手机中删除应用程序.
1)成功验证后,Web服务向我发送两个cookie.我如何访问它们?我是否直接进入NSHTTPCookie存储并以其名称获取cookie,或者是否有AFNetworking"方式"来执行此操作?
2)如何永久保存这两个神奇的cookie,以便AFHTTPClient的子类与每个请求一起传递这两个神奇的cookie?我只是将它们保存在钥匙串或NSUserDefaults或NSURLCredentialsStorage中吗?或者还有一种AFNetworking方式来做到这一点?我在AFNetworking中读到了一个setAuthorization()方法,但我不确定这是否也适用于用户名/密码和cookie.
3)如何以AFNetworking方式删除这些cookie?
谢谢!!
Jas*_*son 19
AFNetworking没有明确地使用cookie做任何事情,因此没有处理cookie的"AFNetworking方式".您将使用NSHTTPCookie和NSHTTPCookieStorage.
在我的项目中,我不需要做任何特定于让他们使用cookie的请求.如果您需要不同于AFNetworking默认提供的请求行为,则requestWithMethod:path:parameters:在AFHTTPClient子类中重写.
例如,获取从AFJSONRequest返回的cookie
NSURLRequest* request = <some request returned from your AFHTTPClient subclass>
AFJSONRequestOperation* op = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
success:^(NSURLRequest* request, NSHTTPURLResponse* response, id userData) {
NSArray* cookies = [NSHTTPCookie cookiesWithResponseHeaderFields:[response allHeaderFields] forURL:url];
}
failure:...
Run Code Online (Sandbox Code Playgroud)这个答案说要在cookie上设置一个到期日期.如果您想自己保留cookie,可以将cookie转换为字典并保存.这个答案说使用钥匙串.
NSMutableDictionary* cookieDictionary = [NSMutableDictionary dictionaryWithDictionary:cookiePrefs];
for (NSHTTPCookie* cookie in cookies) {
[cookieDictionary setValue:cookie.properties forKey:cookie.name];
}
Run Code Online (Sandbox Code Playgroud)从NSHTTPCookieStorage中删除cookie.需要注意一些棘手的问题.如果您自己保存了cookie,请删除存储的值,但这是合适的.
NSArray* cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:theUrl];
for (NSHTTPCookie* cookie in cookies) {
[[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
}
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
12397 次 |
| 最近记录: |