码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2015-05-07 14:37:25      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:安全   https   nsurlconnection   http   

一直使用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];
        }
}

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

标签:安全   https   nsurlconnection   http   

原文地址:http://blog.csdn.net/nt_tian/article/details/45559681

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!