AFNetwoking 3.1 https请求相关

来源:互联网 发布:文字特效软件 编辑:程序博客网 时间:2024/06/06 07:19



     1.下载最新版: AFNetwoking

     地址:https://github.com/AFNetworking/AFNetworking.git

     

     2. 导入头文件

     #import "AFNetworking.h"

     

     3.初始化

     

    -(AFHTTPSessionManager*)manager{

        

        if (!manager) {

            

            manager = [AFHTTPSessionManager manager];

            

            //    上传json格式

            //        manager.requestSerializer = [AFJSONRequestSerializer serializer];

            // 上传普通格式

            manager.requestSerializer = [AFHTTPRequestSerializer serializer];

            

            //返回到的是json数据

            //        manager.responseSerializer = [AFJSONResponseSerializer serializer];

            // 返回的普通数据

            manager.responseSerializer = [AFHTTPResponseSerializer serializer];

            

            

            manager.requestSerializer.timeoutInterval = kTimeOutInterval;

            

            manager.responseSerializer.acceptableContentTypes = [NSSet 

setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html", @"text/plain",nil];

            

            

            

        }

        

        return manager;

        

    }

     

     

     4.发起请求

     AFHTTPSessionManager *manager = [self manager];

     [manager POST:nil parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {

     

     } progress:^(NSProgress * _Nonnull uploadProgress) {

     

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

     

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

     

     }];

     

     

     如果你的url http 那么 到此 就可以返回数据了

     如果你的url https  那么请继续往下看

     

     5.https相关配置

     == ①大部分需要证书

        证书制作方法 

            在桌面建一个文件夹 名字随便起

            打开终端 cd 空格 把刚才建的文件夹路径拖过来

            按回车

            输入下面语句

                openssl s_client -connect www.baidu.com:443 </dev/null 2>/dev/null | openssl x509 -outform DER > https.cer

            语句解释如下:www.baidu.com 是你请求的地址的域名

                        https.cer 将要生成的证书的名字 当然你可以随便起 a.cer b.cer sb.cer 但是重要的是要以 .cer 结尾

     ②退出终端 

     把刚才制作的 https.cer 证书 拖到项目

     编写以下代码


     - (AFSecurityPolicy*)customSecurityPolicyName:(NSString*)name

     {

     

     NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"https" 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];

     

     return securityPolicy;

     }

     

     ③一切准备就绪 可以发起请求了

     AFHTTPSessionManager *manager = [self manager];

     [manager setSecurityPolicy:[self customSecurityPolicyName:@"htttps"]];


     [manager POST:nil parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {

     

     } progress:^(NSProgress * _Nonnull uploadProgress) {

     

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

     

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

     

     }];

     ④解析你的数据吧

     

     一切准备就绪,coder 敲起来吧!!!

     

     如有其它疑问 请留言

       

         星爷至上





0 0