iOS开发适配HTTPS

本文介绍如何使用AFNetworking 2.0进行HTTPS请求,并通过证书验证确保通信安全。包括了如何导入并设置服务器证书,以及如何配置客户端信任非法证书。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用的是afnetworking2.0的网络框架

我是将post请求和get请求自己封装了一下,这样就算升级afnetworking时,里面的方法变了,我们只需要更改自己封装的类就行了。

好了,首先我们需要服务器给我们一个crt的证书,然后打开,用钥匙串到处cer类型的文件,放到我们的项目中,然后在每一个请求中加上一段代码就行了。

+(void)POST:(NSString *)url parameters:(NSDictionary *)parameters success:(void (^)(id))success failure:(void (^)(NSError *))failure
{
    AFHTTPRequestOperationManager*mager=[AFHTTPRequestOperationManager manager];
    mager.responseSerializer = [AFJSONResponseSerializer serializer];
    mager.requestSerializer=[AFJSONRequestSerializer serializer];
    [mager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

    //mager.securityPolicy.SSLPinningMode = AFSSLPinningModeCertificate;
    // 设置证书模式
    NSString * cerPath = [[NSBundle mainBundle] pathForResource:@"证书名字" ofType:@"cer"];
    NSData * cerData = [NSData dataWithContentsOfFile:cerPath];
    mager.securityPolicy.pinnedCertificates = [[NSArray alloc] initWithObjects:cerData, nil];
    // 客户端是否信任非法证书
    mager.securityPolicy.allowInvalidCertificates = YES;
    // 是否在证书域字段中验证域名
    [mager.securityPolicy setValidatesDomainName:NO];

    [mager POST:url parameters:parameters success:^(AFHTTPRequestOperation * operation, id responseObject) {
        if (success) {
            if([[responseObject objectForKey:@"code"]integerValue]==3){

                [MBProgressHUD hideHUD];
                [self tokenchange:[responseObject objectForKey:@"message"]];

            }
//            else if([[responseObject objectForKey:@"code"]integerValue]==0){
//                [MBProgressHUD showError:[responseObject objectForKey:@"message"]];
//            }
            else{
            success(responseObject);
            }
        }

    } failure:^(AFHTTPRequestOperation * operation, NSError * error) {
        if (failure) {
            failure(error);
        }
    }];
}

web页面时也需要使用https,这时我们只需要在appdelegeta中end后面添加一个方法就行了

@implementation NSURLRequest(DataController)
//ios 允许webview加载https网址
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host

{

    return YES;

}

@end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值