1. 程式人生 > >iOS ASIHTTPRequest、 NSURLRequest、UIWebView、WKWebView跳過安全認證請求https

iOS ASIHTTPRequest、 NSURLRequest、UIWebView、WKWebView跳過安全認證請求https

一 .ASIHTTPRequest

 ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
 [request setValidatesSecureCertificate:NO]

 

ASIFormDataRequest *request = [[ASIFormDataRequest alloc] initWithURL:[NSURL URLWithString:@""]];
[request setValidatesSecureCertificate:NO];

[request setValidatesSecureCertificate:NO];

設定跳過安全認證。

二.NSURLRequest,UIWebView

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@""]];
[NSURLConnection connectionWithRequest:request delegate:self];

設定代理

<NSURLConnectionDelegate>

實現代理方法

- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace{
    return [protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust];
}

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge{
    if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) {
        [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];
        [challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge];
    }
}

三.NSURLRequest,WKWebView

再新增WKWebView的一個代理方法

- (void)webView:(WKWebView *)webView didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential * _Nullable credential))completionHandler{
    if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) {
        NSURLCredential *card = [[NSURLCredential alloc]initWithTrust:challenge.protectionSpace.serverTrust];
        completionHandler(NSURLSessionAuthChallengeUseCredential,card);
    }
}