+ (void)requestCookieWithPath:(NSString *)path
Params:(NSDictionary *)params
Method:(NSString *)method
Success:(HttpSuccessBlock)success{
//创建post请求
//创建AFHTTPClient对象
AFHTTPClient *client = [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:kBaseUrl]]
NSMutableURLRequest *post = [client requestWithMethod:method path:path parameters:params]
NSData *cookiesData = [[NSUserDefaults standardUserDefaults]objectForKey:@"Set-Cookie"]
if ([cookiesData length]) {
NSArray *cookies = [NSKeyedUnarchiver unarchiveObjectWithData:cookiesData]
NSHTTPCookie *cookie
for (cookie in cookies) {
[[NSHTTPCookieStorage sharedHTTPCookieStorage]setCookie:cookie]
}
}
//创建AFJSONRequestOperation对象
NSOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:post success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
success(JSON)
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
NSLog(@"error = %@",error)
//请求超时提示
NSString *errorStr = [[NSString alloc]initWithFormat:@"%@",error]
NSString *theError = @"The request timed out."
if ([errorStr rangeOfString:theError].length >0) {
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"请求超时" delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil]
[alert show]
}
}]
//开始请求
[operation start]
}
1:获取cookie:NSArray *array = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:url]
NSDictionary *dict = [NSHTTPCookie requestHeaderFieldsWithCookies:array]
2:删除cookie:
for (NSHTTPCookie *cookie in array)
{
[[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie]
}
更多相关内容可参考资料http://www.viiboo.cn
1.cookie的概念
Cookie是由服务器端生成,发送给User-Agent(一般是浏览器或者客户端),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站地址时就发送该Cookie给服务器在使用UIWebView访问网站时,经常遇到的一个问题是需要登录。比如访问新浪微博,或者访问某个个人账号,但是需要直接访问url,却会被重定向到登录页进行登录。那么真正的浏览器是如何做到的直接登录?一般来说,答案都是cookies。在你第一次登录时,网站设置了cookie,浏览器保存这些携带了登录信息的cookies,以后就可以直接登录。所以我们要做的就是在url request中带上cookies。
2.苹果系统中的cookie机制
因为NSHTTPCookieStorage的默认策略是:NSHTTPCookieAcceptPolicyAlways。当你访问一个网站时,NSURLRequest都会帮你主动记录下来你访问的站点设置的cookie,如果 Cookie 存在的话,会把这些信息放在 NSHTTPCookieStorage 容器中共享,
当你下次再访问这个站点时,NSURLRequest会拿着上次保存下来了的cookie继续去请求。
同样适用于ASIHTTPRequest,AFNetworking, Webview等,cookie常用于一些基于认证的网络请求
NSHTTPCookieStorage 实现了一个管理cookie的单例对象(只有一个实例),每个cookie都是NSHTTPCookie类的实例,最为一个规则,cookie在所有应用之间共享并在不同进程之间保持同步。
Session cookie(一个isSessionOnly方法返回YES的cookie)只能在单一进程中使用。
1.获取cookie
2、如果当前cookie为空,只要重新请求一个url
3、清空cookie
4、设置指定的cookie
6.UIWebView访问网站时,经常遇到的一个问题是需要登录。比如访问新浪微博,或者访问某个个人账号,但是需要直接访问服务器返回的某个url,却会被重定向到登录页进行登录。
补充
关于ios中cookie的使用案列: ios中Cookie的使用
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)