iOS 9 AFNetworking 使用整理(https)

iOS 9 AFNetworking3.x 使用整理 (https)

简述

AFNetworking 是轻量级的网络库,使用它 非常方便。以前使用AFNetworking 1.x 访问 https 只是 配置一个宏,但最近升级AFNetworking 3.x 访问 https接口 时出现了各种问题 如code =9813 的这种错误 ,解决过程也是在网上查的结果,各种的试还是不成功。主要是 忽略了证书的导入,和 AFNetworking 的AFSecurityPolicy配置不正确。所以你 一定要记得去向 服务器开发人员和部署人员 要证书,要不肯定不行。。。 下载地址,


导入 AFNetworking

方式 1.

下载AFNetworking, 解压后把里面的 AFNetworking 文件夹拖入你的项目

方式 2

当然你也可以使用cocopod 将AFNetworking 加载到你的项目。在命令行 cd 到你工程的主目录下输入命令 vi Podfile ,即创建 Podfile 文件,并写入 以下:


    platform :ios, '7.0'
    pod "AFNetworking"

记得关闭xcode,然后再输入命令* pod install *即可将AFNetworking 导入到你的工程

导入 cer 证书(如果是正式证书忽略此步)

向服务器要配置服务器时 生成的.crt 文件
然后在命令行输入命令 :
openssl x509 -in server.crt -out client.cer -outform der
将生成 的.cer 文件导入你的工程(直接拖入即可)

使用

封装

最好对 AFNetworking 进行简单的封装 ,这样可以对网络请求相关的统一管理。如:

//
//  ZXJAppHTTPClient.h
//  AFNetworkingDemo
//
//  Created by zhangxiaojing on 16/1/13.
//  Copyright © 2016年 XXX. All rights reserved.
//

#import <AFNetworking/AFNetworking.h>

@interface ZXJAppHTTPClient : AFHTTPSessionManager
+ (instancetype)sharedUserSVRClient;
+ (instancetype)sharedHtmlSVRClient;

@end

注意

设置AFSecurityPolicy 的模式一定得是AFSSLPinningModePublicKey,这样才会允许无效的非官方的内置证书请求通过。如:

+ (instancetype)sharedUserSVRClient {
    static ZXJAppHTTPClient *sharedUserSVRClient = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedUserSVRClient = [[ZXJAppHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:kParAPIBaseUserServiceURLString]];
        sharedUserSVRClient.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey];
        sharedUserSVRClient.securityPolicy.allowInvalidCertificates = YES;  
    });

    return sharedUserSVRClient;
}

使用实例 1 -json


    [[ZXJAppHTTPClient sharedUserSVRClient] POST:loginApiPort parameters:dictParLogin progress:nil success:^(NSURLSessionDataTask * __unused task, id JSON)
    {
        NSLog(@"成功 返回:\n%@\n",(NSDictionary *)JSON);
    } failure:^(NSURLSessionDataTask *__unused task, NSError *error) {
        NSLog(@"%@",error);
    }];

使用实例 2 -html

ios9 webview 访问https 网址,各种坑,直接使用 afnetworking 简单易用:

    [[NSURLCache sharedURLCache] removeAllCachedResponses];
    [[NSURLCache sharedURLCache] setDiskCapacity:0];
    [[NSURLCache sharedURLCache] setMemoryCapacity:0];
    [[ZXJAppHTTPClient sharedHtmlSVRClient] POST:@"test.html" parameters:nil progress:nil success:^(NSURLSessionDataTask * __unused task, id responseObject) {
        NSLog(@"成功 ");         
        self.webView.delegate =self;
        [self.webView loadData:responseObject MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:@"https://baseUrl/test.html"]];    

    } failure:^(NSURLSessionDataTask *__unused task, NSError *error) {      
        NSLog(@"失败 %@",error);
    }];

其它

以上是亲试出来的结果,希望大家多多指教,如果有其它的问题欢迎指导。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值