您的位置:首页 > 理论基础 > 计算机网络

iOS https请求第一步从服务器下载证书

2016-10-17 09:26 375 查看
+ (void)InitCertWithBlock:(void (^)(BOOL))block
{
NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSLog(@"--->%@", docPath);
NSString *certDirPath = [docPath stringByAppendingPathComponent:@"Cert"];
NSString *certTxtPath = [certDirPath stringByAppendingPathComponent:@"CertTxt.txt"];

NSFileManager *fileManager = [NSFileManager defaultManager];
[fileManager createDirectoryAtPath:certDirPath withIntermediateDirectories:YES attributes:nil error:nil];

NSURLSession *session = [NSURLSession sharedSession];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:DWGETCER]];
request.HTTPMethod = @"POST";
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if (!error) {
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
if ([dic[@"errorCode"] intValue] == 0) {
NSString *certFileURL = dic[@"data"];
if ([fileManager fileExistsAtPath:certTxtPath] && [fileManager fileExistsAtPath:[certDirPath stringByAppendingPathComponent:@"bemm.cer"]]) {
NSString *localCertFileURL = [NSString stringWithContentsOfFile:certTxtPath encoding:NSUTF8StringEncoding error:nil];
if ([certFileURL isEqualToString:localCertFileURL]) {
block(YES);
return ;
}
}
//下载证书
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:certFileURL]];
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if (!error) {
[data writeToFile:[certDirPath stringByAppendingPathComponent:@"bemm.cer"] atomically:YES];
[certFileURL writeToFile:certTxtPath atomically:YES encoding:NSUTF8StringEncoding error:nil];
block(YES);
return ;
} else {
block(NO);
return ;
}
}];
[task resume];
} else {
block(NO);
return ;
}
} else {
block(NO);
return;
}
}];
[task resume];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: