iOS-https转

Apple 开发者要进行https的使用了,虽然被延期了,但是apple推出了这项措施,还是表明要推行的,虽然目前被延期了,但是考虑一下,推行https是必须的趋势,到现在考虑了一下移动端需要做的事情,真的不多,端口有我们的事情么。没有,环境需要我们搭建么,不需要,我们做什么,我们就要把后台或者说搭建https的人把它们的crt证书发给我们。还有密码,然后导入到我们的钥匙串里面,导出cer证书,然后拉进项目里,是add new file的那种,还要看build phases里面的编译进去了么,这个是重点。

然后(这段是对AFN的使用者说的)在我们请求的基类里面添加这些东西:直接上代码,废话不多说

-(id)init

{

    self = [superinit];

    if (self) {

        _manager = [AFHTTPSessionManagermanager];

    }

    returnself;

}


-(void)postWithPath:(NSString *)path

             params:(NSDictionary *)params

                 vc:(UIViewController *)vc//VCshow-->视图 赋值为--->self

            success:(void (^)(NSURLSessionTask *task,id responseObject))success

            failure:(void (^)(NSURLSessionTask *task,id responseObject))failure

{

    NSLog(@"URL -- %@%@",NetPerfix,path);

    NSLog(@"请求参数:%@",params);

    

    if (vc !=nil) {

        [SVProgressHUDshowWithStatus:@"载入中..."];

    }

    

    NSString *url=[NSStringstringWithFormat:@"%@%@",NetPerfix,path];

    NSLog(@"请求url......%@",url);

    

    // 加上这行代码,https ssl验证,等待后台搭建https成功后在使用,将cer证书拖进项目,名字是:https.cer就可以使用https

    

//    [_manager setSecurityPolicy:[self customSecurityPolicy]];

    [_managerPOST:url

        parameters:params

          progress:nil

           success:^(NSURLSessionDataTask *_Nonnull task,id _Nullable responseObject) {

               

               NSLog(@"errorMessage---%@",responseObject[@"msg"]);

               NSLog(@"Path---%@",path);


               if ([responseObject[@"resultscode"]intValue] ==2) {

                   [selfisChenckOutWithVC:vc];

                    [SVProgressHUDdismiss];

                   return ;

               }else{

                   if ([responseObject[@"resultscode"]intValue] ==1) {


                        [SVProgressHUDdismiss];

                       success(task,responseObject);

                       return ;

                   }elseif([responseObject[@"resultscode"]intValue] == 0){

                       [selfshowErrorWithVC:vcwithMessag:[NSStringstringWithFormat:@"%@",responseObject[@"errorMessage"]]];

                       [SVProgressHUDdismiss];

                       return ;

                   }

               }

               

               

               

               if (vc !=nil)

               {

                   [SVProgressHUDdismiss];

               }

           } failure:^(NSURLSessionDataTask *_Nullable task,NSError *_Nonnull error) {

               NSLog(@"error -- %@",[error localizedDescription]);

               if (vc !=nil) {

                   [SVProgressHUDdismiss];

                   [vc showToast:[errorlocalizedDescription]];

               }

               failure(task,error);

           }];

}

- (AFSecurityPolicy*)customSecurityPolicy

{

    // /先导入证书

    NSString *cerPath = [[NSBundlemainBundle]pathForResource:@"https"ofType:@"cer"];//证书的路径

    NSData *certData = [NSDatadataWithContentsOfFile:cerPath];


    // AFSSLPinningModeCertificate使用证书验证模式

    AFSecurityPolicy *securityPolicy = [AFSecurityPolicypolicyWithPinningMode:AFSSLPinningModeCertificate];


    // allowInvalidCertificates是否允许无效证书(也就是自建的证书),默认为NO

    // 如果是需要验证自建证书,需要设置为YES

    securityPolicy.allowInvalidCertificates =YES;


    //validatesDomainName 是否需要验证域名,默认为YES

    //假如证书的域名与你请求的域名不一致,需把该项设置为NO;如设成NO的话,即服务器使用其他可信任机构颁发的证书,也可以建立连接,这个非常危险,建议打开。

    //置为NO,主要用于这种情况:客户端请求的是子域名,而证书上的是另外一个域名。因为SSL证书上的域名是独立的,假如证书上注册的域名是www.google.com,那么mail.google.com是无法验证通过的;当然,有钱可以注册通配符的域名*.google.com,但这个还是比较贵的。

    //如置为NO,建议自己添加对应域名的校验逻辑。

    securityPolicy.validatesDomainName =NO;


    securityPolicy.pinnedCertificates =@[certData];


    return securityPolicy;

}




// 加上这行代码,https ssl 验证,等待后台搭建https成功后在使用,将cer证书拖进项目,名字是:https.cer就可以使用https

    

//    [_manager setSecurityPolicy:[self customSecurityPolicy]];


- (AFSecurityPolicy*)customSecurityPolicy这个是证书


上面一段使我们请求数据的基类,相信AFNer能够明白。
其实https = http+ssl(签名认证)
有点类似于集成支付宝的时候的签名
http的请求我们一直在用,没什么说的,其实就是服务器生成一个公钥,我们这边生成一个证书,拿着这个证书跟服务器说这是我的身份证,我进去拿点东西就出来,然后服务器说进去吧,其他的就跟http请求一样,披了一层ssl的外衣。
至于不用AFN的,肯定是先把证书在请求前发给服务器,在进行请求,自己看着办吧 >_<!



最后附上一个AFN2.0的https demo链接,32.0都会了,3.0你不知道么?http://download.csdn.net/download/jys1216/9412638



刚刚测试以后发现一些问题:
1.后台传给的证书名字不要随便改
2.上代码:

 NSString *urlString = @"https://svn.sqzht.com:8443/fsb/inter/GoodsInter?flag=14&id=3247&rebaty=2";

    NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"tomcat" ofType:@"cer"];

    NSData * certData =[NSData dataWithContentsOfFile:cerPath];

    NSSet * certSet = [[NSSet alloc] initWithObjects:certData, nil];

    AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];

    // 是否允许,NO-- 不允许无效的证书

    [securityPolicy setAllowInvalidCertificates:YES];

    // 设置证书

    [securityPolicy setPinnedCertificates:certSet];

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

    manager.securityPolicy = securityPolicy;

    manager.responseSerializer = [AFHTTPResponseSerializer serializer];

    // request

    [manager GET:urlString parameters:nil progress:^(NSProgress * progress){

    } success:^(NSURLSessionDataTask *task, id responseObject) {

        NSArray * array = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableLeaves error:nil];

        NSLog(@"OK === %@",array);

    } failure:^(NSURLSessionDataTask *task, NSError *error) {

        NSLog(@"error ==%@",error.description);

    }];

这个亲测可以用



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
综合小区管理系统管理系统按照操作主体分为管理员和用户。管理员的功能包括报修管理、车位管理、车位分配管理、出入管理、字典管理、房屋管理、物业费缴纳管理、公告管理、物业人员投诉管理、我的私信管理、物业人员管理、用户管理、管理员管理。用户的功能包括管理部门以及部门岗位信息,管理招聘信息,培训信息,薪资信息等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 综合小区管理系统管理系统可以提高综合小区管理系统信息管理问题的解决效率,优化综合小区管理系统信息处理流程,保证综合小区管理系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理综合小区管理系统信息,包括出入管理,报修管理,报修管理,物业费缴纳等,可以管理操作员。 出入管理界面,管理员在出入管理界面中可以对界面中显示,可以对招聘信息的招聘状态进行查看,可以添加新的招聘信息等。报修管理界面,管理员在报修管理界面中查看奖罚种类信息,奖罚描述信息,新增奖惩信息等。车位管理界面,管理员在车位管理界面中新增。公告管理界面,管理员在公告管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值