NT_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];
        }
}
时间: 2024-11-16 04:52:36

NT_iOS笔记—NSURLConnection怎么把http改为https的相关文章

(笔记) (ARM) QQ2440 开发板改为 GT2440 (Linux) (开发板)

QQ2440改 GT24401跟换Nand Flash   将QQ2440的Nand Flash k9f1208u0b (64M)焊接取下来,换上k9f2g08u0a 或k9f2g08u0b (256M)2.去掉QQ2440板上右边靠中间的电阻 NR5,不去掉无法从Nand Flash 启动 这里去掉电阻配置 Nand Flash Memory Configuration Table 对应的管脚 NCON0,      GPG13,    GPG14,    GPG15            

iOS 开发苹果由http改为https 之后,如果服务器不做相应的修改,那么客户端需要做点更改

本打算做一个新工程, 但是改来改去就是网络请求不成功,失败原因如下. App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file. 解决方法: 1,服务器改为https 2,客户端 在info.plist 加入key

iOS 开发笔记-NSURLConnection的使用

通过NSURLConnection发送一个HTTP GET请求 //send a GET request to server with some params -(void)httpGetWithParams{ NSString *urlString = @"http://chaoyuan.sinaapp.com"; urlString = [urlString stringByAppendingString:@"?p=1059"]; NSURL *url = [N

MySQL学习笔记1(增删查改)

创建表: /* 创建数据库 create database 数据库名; */ CREATE DATABASE mybase; /* 使用数据库 use 数据库名 */ USE mybase; /* 创建数据表的格式 create table 表名( 列名1 数据类型 约束, 列名2 数据类型 约束, 列名3 数据类型 约束 ); 创建用户表,用户编号,姓名,用户的地址 将编号列,设置为主键约束,保证列的数据唯一性,非空性 primary key AUTO_INCREMENT 这一句意思是让主键列

NT_iOS笔记—iOS用户添加字体后调用

iOS需要用到新字体,直接添加就行了,之前写过iOS 添加字体 但是当字体文件太多.太大.或者没有用户喜欢的字体怎么办? 让用户手动的下载字体或者导入字体. 那我们怎么调用这些字体呢? 可以通过这个方法找到所有字体 NSArray *familyNames =[[NSArray alloc]initWithArray:[UIFont familyNames]]; NSArray *fontNames; NSInteger indFamily, indFont; for(indFamily=0;i

NT_iOS笔记—判断iPhone6

iPhone6和iPhone6Plus 大陆已经开卖一段时间了,可以看到iPhone6的适配苹果已经给做好了,但是如果你是阅读类的软件,在你还没有真正的适配的时候,你会看到字体也会被放大,感觉不是很舒服.那么问题来了,怎么判断是iPhone6? 我当时试了一下以前判断iPhone5的方法: [objc] view plaincopy [UIScreen mainScreen] 当时iPhone5的尺寸为 640*1136 我得到的信息是 [objc] view plaincopy //    <

NT_iOS笔记—去除string首尾空格、换行

去除string首尾空格: NSString *NewString = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 去除string首尾空格和换行: NSString *NewString = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

NT_iOS笔记—百度社会化分享(64Bit)

啊哦,已经一月底了,百度还是没有正式放出支持64位的社会化分享组件. OK,不说什么了,提供一个下载地址:http://pan.baidu.com/s/1o69NtxS 里面是百度内部支持64位的分享包.注意只是分享... 如果你同时集成了百度推送或者其他的功能...那就只能是拆开,分别处理了. 或者弃掉百度改用别人的!

NT_iOS笔记—add &quot;remote-notification&quot; to the list of your supported UIBackgroundModes in your Info.plis

在用信鸽推送的时候报了: You've implemented -[<UIApplicationDelegate> application:didReceiveRemoteNotification:fetchCompletionHandler:], but you still need to add "remote-notification" to the list of your supported UIBackgroundModes in your Info.plist