iOS 获取 cookie webView中使用Cookie
2016-01-28 17:23
344 查看
【获取Cookie】
+ (void)deleteCookie {// 清空 cookie
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStoragesharedHTTPCookieStorage];
NSArray *_tmpArray = [NSArray arrayWithArray:[cookieJar cookies]];
for (id obj in _tmpArray)
{
[cookieJar deleteCookie:obj];
}
}
+(void)YYZQSQObtainCookieBlock:(cookieBlock)block {
// 现在服务器 直接返回了 cookie 这里就不需要用了
// 自己设置 cookie
// NSMutableDictionary *cookieProperties = [NSMutableDictionary dictionary];
// [cookieProperties setObject:@"username" forKey:NSHTTPCookieName];
// [cookieProperties setObject:@"rainbird" forKey:NSHTTPCookieValue];
// [cookieProperties setObject:@"cnrainbird.com" forKey:NSHTTPCookieDomain];
// [cookieProperties setObject:@"cnrainbird.com" forKey:NSHTTPCookieOriginURL];
// [cookieProperties setObject:@"/" forKey:NSHTTPCookiePath];
// [cookieProperties setObject:@"0" forKey:NSHTTPCookieVersion];
//
// NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:cookieProperties];
// [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
// NSString *token = [[NSUserDefaults standardUserDefaults]objectForKey:@"access_token"];
NSString *imuserid = [[NSUserDefaultsstandardUserDefaults]objectForKey:@"imuserid"];//统一平台uid
NSString * uid = [YYUserManager sharedObject].user.uid;
NSMutableDictionary *dict = WebServiceDictionary(CurrentUserID());
NSString *urlStr = [NSStringstringWithFormat:@"%@&uid=%@&token=%@",WebServiceZQSQURL(@"m=Login&a=getCookies",
dict),imuserid,uid];
NSURL *url = [NSURL URLWithString:urlStr];
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheDatatimeoutInterval:30.0f];
NSOperationQueue *queue = [[NSOperationQueue alloc]init];
[NSURLConnection sendAsynchronousRequest:request
queue:queue
completionHandler:^(NSURLResponse *response, NSData*data, NSError *error){
NSString * responseString = [[NSString alloc] initWithBytes:[data bytes] length:[data length] encoding:NSUTF8StringEncoding];
NSLog(@"responseString === %@",responseString);
//转换NSURLResponse成为HTTPResponse
NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response;
//获取headerfields
NSDictionary *fields = [HTTPResponse allHeaderFields];//原生NSURLConnection写法
NSLog(@"fields = %@",[fields description]);
NSURL *urlCookie = [NSURL URLWithString:@"api-zqt-seller-test.cifco.net"];
//获取cookie方法1
NSArray *cookies1 = [NSHTTPCookiecookiesWithResponseHeaderFields:fields forURL:urlCookie];
NSLog(@"cookies1 == %@",cookies1);
//获取cookie方法2
NSString *cookieString = [[HTTPResponse allHeaderFields] valueForKey:@"Set-Cookie"];
NSLog(@"cookieString == %@",cookieString);
//获取cookie方法3
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];
}];
}
//方法2
+ (BOOL)GetCookieData:(NSString *) urlString{
NSString * cookie = nil;
NSURL *url = [NSURL URLWithString:urlString];
NSMutableURLRequest *getRequest = [NSMutableURLRequestrequestWithURL:url];
[getRequest setHTTPMethod:@"GET"];
NSURLResponse *response;
NSData *myReturn =[NSURLConnection sendSynchronousRequest:getRequest returningResponse:&response error:nil];
NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response;
NSDictionary *fields = [HTTPResponse allHeaderFields];
NSLog(@"取得我要的cookie
%@",[fields description]);
//取得我要的cookie
if (cookie == nil) {
cookie =[[NSString alloc] initWithString:
[[[fields valueForKey:@"Set-Cookie"] componentsSeparatedByString:@";"] objectAtIndex:0]];
}
else{
cookie = [[[fields valueForKey:@"Set-Cookie"] componentsSeparatedByString:@";"] objectAtIndex:0];
}
NSLog(@"取得我要的cookiecookie
= %@",cookie);
NSString *strRet = [[NSString alloc] initWithData:myReturn encoding:NSASCIIStringEncoding];
NSLog(@"取得我要的cookie
%@",strRet);
if([cookie length]<25)
return NO;
else
return YES;
}
【在WebView中使用Cookie】
NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url];if (self.isCookie) {
// 网络请求头 稍后用于判断是不是我们需要的cookie
NSString *strHttp = [XHWebServiceBaseAddresssubstringWithRange:NSMakeRange(7, 16)];
NSHTTPCookie *cookie = nil;
// 这个是所有的Cookie
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStoragesharedHTTPCookieStorage];
// 现在服务器 直接返回了 cookie 这里就不需要用了
for (NSHTTPCookie *ck in [cookieJar cookies])
{
NSString * domain = [ck domain];
NSString * value = [ck value];
NSLog(@"domain 现在服务器 直接返回了======%@",
domain);
// 根据domain 来区分,那个是我们需要的cookie
if ([domain hasPrefix:strHttp]) {
NSLog(@"现在服务器 直接返回了=
%@ == %@",domain,value);
cookie = ck;
}
}
NSLog(@"这条是我要的cookie
===%@",cookie);
// NSString * cookieName = [cookie name];
NSString * cookieVal = [cookie value];
// NSString * domain = [cookie domain];
// // 手动添加 cookie
// NSDictionary *properties = [[NSMutableDictionary alloc] init];
// [properties setValue:@"PHPSESSID" forKey:NSHTTPCookieValue];
// [properties setValue:cookieVal forKey:NSHTTPCookieName];
// [properties setValue:@"" forKey:NSHTTPCookieDomain];
// [properties setValue:[NSDate dateWithTimeIntervalSinceNow:60*60] forKey:NSHTTPCookieExpires];
// [properties setValue:@"/" forKey:NSHTTPCookiePath];
// NSHTTPCookie *cookie11 = [[NSHTTPCookie alloc] initWithProperties:properties];
// 根据服务器 需要的内容,自行拼接
// NSString *cookieString = [[NSString alloc] initWithFormat:@"name=PHPSESSID;value=%@;path=/;domain=%@;httponly",cookieVal,domain];
NSString *cookieString = [[NSString alloc] initWithFormat:@"PHPSESSID=%@",cookieVal];
// 这里 可以传递多个 cookie
// NSArray *cookies11=[NSArray arrayWithObjects:cookie11,nil];
// NSDictionary *headers11=[NSHTTPCookie requestHeaderFieldsWithCookies:cookies11];
// Cookie 需要根据服务器接收对象 进行自行修改 默认会加上 HTTP_
[request setValue:cookieString forHTTPHeaderField:@"Cookie"];
}
return request;
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- cookie的secure属性详解
- 浏览器 cookie 限制
- 浅谈COOKIE和SESSION区别
- 深入解析Session是否必须依赖Cookie
- 新手菜鸟必读:session与cookie的区别
- php实现通过cookie换肤的方法
- C#中Cookie之存储对象
- C#基于WebBrowser获取cookie的实现方法
- ASP.NET Cookie 操作实现
- php中cookie的作用域
- 写入cookie的JavaScript代码库 cookieLibrary.js
- ie7下利用ajax跨域盗取cookie的解决办法