HTTPS
程序员文章站
2022-07-13 21:17:35
...
#import "ViewController.h"
@interface ViewController () <NSURLSessionTaskDelegate>
@end
@implementation ViewController
- (void)httpsSessionTask{
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];
}
#pragma mark - <NSURLSessionTaskDelegate>
/**
* challenge : 挑战、质询
* completionHandler : 通过调用这个block,来告诉 URLSession 要不要接收这个证书
*/
- (void)URLSession:(NSURLSession *)session
task:(NSURLSessionTask *)task
didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential *))completionHandler{
// 如果不是服务器信任类型的证书,直接返回
if (![challenge.protectionSpace.authenticationMethod isEqualToString: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
就把苹果官方网站的首页抓取下来了
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US" prefix="og: http://ogp.me/ns#" class="">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=8; IE=9" />
... ...
上一篇: disconf 实践(二)【原创】
下一篇: Spring JDBC事务管理例子
推荐阅读
-
php使用curl访问https示例分享
-
c#使用Socket发送HTTP/HTTPS请求的实现代码
-
.Net Core和jexus配置HTTPS服务方法
-
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
-
java开发https请求ssl不受信任问题解决方法
-
浏览器打开网页总提示https不安全信息该怎么办?
-
http和https有什么区别?网站有没有必要启用https
-
解决Error:All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com
-
中小公司网站建设过程中是否应该进行HTTPS环境部署
-
ASP.NET Core Kestrel 中使用 HTTPS (SSL)