iOS 获取 cookie webView中使用Cookie
来源:互联网 发布:介绍编程的书 编辑:程序博客网 时间:2024/05/17 01:20
【获取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;
- iOS 获取 cookie webView中使用Cookie
- iOS中cookie使用
- webview获取网页cookie
- Android WebView获取cookie
- iOS中给WebView写入cookie
- iOS 设置webView cookie
- iOS中Cookie的使用
- iOS中Cookie的使用
- ios webview cookie存储地点
- ios webview清除缓存Cookie
- Android WebView中Cookie的获取和设置
- ios afnetworking获取cookie
- webView中设置cookie无效
- webView中cookie的处理:webView+cookie+okhttp
- IOS中http请求使用cookie
- IOS中http请求使用cookie
- IOS中http请求使用cookie
- IOS中http请求使用cookie
- HTML 5 与HTML 4 的区别 + HTML5 语义化布局(一)
- HDU4283:You Are the One(区间DP)
- javase mybatis的操作数据库
- 设计模式之装饰模式
- Crash原因捕捉利器
- iOS 获取 cookie webView中使用Cookie
- Unity手游:自动寻路Navmesh入门
- linux 下查看机器是cpu是几核的
- Github提交代码方法
- oracle user_tab_partitions中,num_rows为空的处理办法
- Excel批量转换科学计数法为文本格式
- 潜伏者
- easyui扩展JS
- JodaTime开源时间/日期库