/** 逻辑:按钮通过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];
}
![](https://img.haomeiwen.com/i6476726/cacc354e97d22e55.png)
网友评论