AFN与HTTPS之二:iOS中使用AFN发起HTTPS请求

使用Xcode新建测试工程并导入 AFNetworking 框架

将上个教程中生成的server.csr文件导入工程中

- (void)afnRequest {

    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];

    AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:kServerRoot] sessionConfiguration:configuration];

    [manager setSecurityPolicy:[self customSecurityPolicy]];

    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html", @"application/x-javascript", nil];

    

    NSString *url = @"https://127.0.0.1";

    

    NSURLSessionDataTask *task = [manager POST:url parameters:nil progress:^(NSProgress * _Nonnull uploadProgress) {

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

        NSLog(@"%@?%@:%@", url, nil, responseObject);

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

        NSLog(@"error: %@", error);

    }];

    [task resume];

    

}

 

- (AFSecurityPolicy *)customSecurityPolicy {

    NSMutableSet *cerSet = [NSMutableSet set];

    [cerSet addObject:[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"iphone" ofType:@"cer"]]];

    AFSecurityPolicy *policy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];

  // 设置证书

    [policy setPinnedCertificates:cerSet];

  // 信任非法证书(自签名证书)

    [policy setAllowInvalidCertificates:YES];

  // 是否验证域名

    [policy setValidatesDomainName:NO];

    return policy;

}

 

 

调用 request 方法后,日志输出

https://127.0.0.1?(null):{

    error = 0;

}

 

posted @ 2017-04-26 14:22  richard3Huang  阅读(302)  评论(0)    收藏  举报