iOS笔记—NSURLConnection怎么把http改为https

Posted 沈成才

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS笔记—NSURLConnection怎么把http改为https相关的知识,希望对你有一定的参考价值。

一直使用NSURLConnection请求HTTP接口,现在为了安全性的考虑打算使用HTTPS。

那么怎么修改呢?

1.不需要证书验证 ps:我们使用的就是这种

1.1 直接修改HTTP为HTTPS;

1.2 确认有 “Security.framework”

1.3 修改完成,可以直接请求了。

2.需要证书验证

其他的和1是一样的,只不过需要加下面方法.

- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge

     static CFArrayRef certs;
        if (!certs) 
            NSData*certData =[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"srca" ofType:@"cer"]];
            SecCertificateRef rootcert =SecCertificateCreateWithData(kCFAllocatorDefault,CFBridgingRetain(certData));
            const void *array[1] =  rootcert ;
            certs = CFArrayCreate(NULL, array, 1, &kCFTypeArrayCallBacks);
            CFRelease(rootcert);    // for completeness, really does not matter
        

        SecTrustRef trust = [[challenge protectionSpace] serverTrust];
        int err;
        SecTrustResultType trustResult = 0;
        err = SecTrustSetAnchorCertificates(trust, certs);
        if (err == noErr) 
            err = SecTrustEvaluate(trust,&trustResult);
        
        CFRelease(trust);
        BOOL trusted = (err == noErr) && ((trustResult == kSecTrustResultProceed)||(trustResult == kSecTrustResultConfirm) || (trustResult == kSecTrustResultUnspecified));

        if (trusted) 
            [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];
        else
            [challenge.sender cancelAuthenticationChallenge:challenge];
        

以上是关于iOS笔记—NSURLConnection怎么把http改为https的主要内容,如果未能解决你的问题,请参考以下文章

iOS学习笔记21-NSUrlSession与NSUrlConnection

ios网络NSURLConnection POST

iOS学习笔记13-网络NSURLSession

ios开发网络学习四:NSURLConnection大文件断点下载

ios开发网络学习:一:NSURLConnection发送GET,POST请求

ios开发网络学习三:NSURLConnection小文件大文件下载