- //
- // ViewController.m
- // 11-掌握-HTTPS
- #import "ViewController.h"
- @interfaceViewController ()<NSURLSessionTaskDelegate>
- @end
- @implementation ViewController
- - (void)viewDidLoad {
- [super viewDidLoad];
- NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]delegate:self delegateQueue:[[NSOperationQueue alloc] init]];
- NSURLSessionDataTask *task = [session dataTaskWithURL:[NSURL URLWithString:@"https://www.apple.com/"] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
- NSLog(@"%@", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
- }];
- [task resume];
- }
- #pragmamark -
- /**
- * challenge : 挑战、质询
- * completionHandler : 通过调用这个block,来告诉URLSession要不要接收这个证书
- */- (void)URLSession:(NSURLSession *)sessiontask:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challengecompletionHandler:(void(^)(NSURLSessionAuthChallengeDisposition, NSURLCredential *))completionHandler
- {
- // 如果不是服务器信任类型的证书,直接返回
- if(![challenge.protectionSpace.authenticationMethodisEqualToString:NSURLAuthenticationMethodServerTrust])return;
- // void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential *)
- // NSURLSessionAuthChallengeDisposition : 如何处理这个安全证书
- // NSURLCredential :安全证书
- // 根据服务器的信任信息创建证书对象
- // NSURLCredential *crdential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];
- // 利用这个block说明使用这个证书
- // if (completionHandler) {
- // completionHandler(NSURLSessionAuthChallengeUseCredential, crdential);
- // }
- !completionHandler ? : completionHandler(NSURLSessionAuthChallengeUseCredential, challenge.proposedCredential);
- }
- @end
来源: http://www.bubuko.com/infodetail-1994750.html