图片验证码

/** 逻辑:按钮通过data获取img,同时保存本次获取图片验证码接口的cookie,保存本地。登录时 塞上此cookie,可保证image-code和设备的一致性,登录时把image-code传上就OK */

// 获取+刷新 图片验证码

- (void)makeImageCodeImg:(UIButton *)sender {         

NSString *path = [NSString stringWithFormat:@"%@/validate/image", QDCBaseUrl];    

NSData *imgData = [NSData dataWithContentsOfURL:[NSURL URLWithString:path]];    

UIImage *img = [UIImage imageWithData:imgData];    

[sender setBackgroundImage:img forState:UIControlStateNormal];         

NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];         

if (cookies.count > 0) {                 

NSHTTPCookie *cookieObj = cookies.firstObject;        

if (!QDCStringIsEmpty(cookieObj.value)) {            

NSString *cookieStr = NSStringFormat(@"SESSION=%@", cookieObj.value);                         

[[NSUserDefaults standardUserDefaults] setObject:cookieStr forKey:@"NSUserDefaults_Cookie"];             [[NSUserDefaults standardUserDefaults] synchronize];        

}    

}         

return;     

// 另一种方式

//    NSString *path = [NSString stringWithFormat:@"%@/validate/image", QDCBaseUrl];         

NSURLSession *session = [NSURLSession sharedSession];    

NSURLSessionDataTask *task = [session dataTaskWithURL:[NSURL URLWithString:path] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {        

NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];                 

if (cookies.count > 0) {                         

NSHTTPCookie *cookieObj = cookies.firstObject;            

if (!QDCStringIsEmpty(cookieObj.value)) {                

NSString *cookieStr = NSStringFormat(@"SESSION=%@", cookieObj.value);                                  [[NSUserDefaults standardUserDefaults] setObject:cookieStr forKey:@"NSUserDefaults_Cookie"];                 [[NSUserDefaults standardUserDefaults] synchronize];            

}        

}        

// 回到主线程:        

dispatch_async(dispatch_get_main_queue(), ^{            

UIImage *img = [UIImage imageWithData:data];            

[sender setBackgroundImage:img forState:UIControlStateNormal];        

});    

}];    

[task resume];

}


你可能感兴趣的:(图片验证码)