1. HTTPS 证书认证(导入相关证书)

#pragma mark - https认证
- (AFSecurityPolicy*)customSecurityPolicy {
// 先导入证书
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"xxxx" ofType:@"cer"]; //证书的路径
NSData *certData = [NSData dataWithContentsOfFile:cerPath]; // AFSSLPinningModeCertificate 使用证书验证模式
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate]; // allowInvalidCertificates 是否允许无效证书(也就是自建的证书),默认为NO
// 如果是需要验证自建证书,需要设置为YES
securityPolicy.allowInvalidCertificates = YES; //validatesDomainName 是否需要验证域名,默认为YES;
//假如证书的域名与你请求的域名不一致,需把该项设置为NO;如设成NO的话,即服务器使用其他可信任机构颁发的证书,也可以建立连接,这个非常危险,建议打开。
//置为NO,主要用于这种情况:客户端请求的是子域名,而证书上的是另外一个域名。因为SSL证书上的域名是独立的,假如证书上注册的域名是www.google.com,那么mail.google.com是无法验证通过的;当然,有钱可以注册通配符的域名*.google.com,但这个还是比较贵的。
//如置为NO,建议自己添加对应域名的校验逻辑。
securityPolicy.validatesDomainName = YES;
NSSet * set = [NSSet setWithObject:certData];
securityPolicy.pinnedCertificates = set; return securityPolicy;
}

2. 发送请求

   NSMutableDictionary *parameters = [[NSMutableDictionary alloc] initWithCapacity:];
[parameters setObject:@() forKey:@"pagenum"]; [[AFNetAPIClient sharedJsonClient].setRequest(@"getjobs").RequestType(GET).Parameters(parameters) startRequestWithSuccess:^(NSURLSessionDataTask *task, id responseObject) {
NSLog(@"%@",responseObject); UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"JSON"
message: responseObject[@"msg"]
delegate: self
cancelButtonTitle: @"Cancel"
otherButtonTitles: @"OK", nil];
[alert show]; NSArray *array = [responseObject[@"data"][@"pagedata"] mutableCopy];
NSLog(@"数组长度:%ld",array.count);
} progress:^(NSProgress *progress) {
NSLog(@"%@",progress);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"%@",error);
}];

3. 下载文件

    // 下载文件
[[AFNetAPIClient sharedJsonClient].setRequest(@"http://120.25.226.186:32812/resources/videos/minion_02.mp4") downloadWithSuccess:^(NSURLResponse *response, NSURL *filePath) {
NSLog(@"Success");
} progress:^(NSProgress *progress) {
NSLog(@"%@",progress);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"%@",error);
}];

4.上传图片

    //上传图片
UIImage *img = [UIImage imageNamed:@""]; NSData *data = UIImageJPEGRepresentation(img, 0.5); NSDictionary *dic = @{@"timestamp" : @"",
@"file" : data,
@"xtype" :@"bang_album",
@"token" : @"8a3dead8022c6c85248efca767c9ecfaf8836617"}; [[AFNetAPIClient sharedJsonClient].setRequest(@"upload.php").Parameters(dic).filedata(data).name(@"Filedata").filename(@"Filedata.jpg").mimeType(@"image/jpeg") uploadfileWithSuccess:^(NSURLSessionDataTask *task, id responseObject) {
NSLog(@"Success");
} progress:^(NSProgress *progress) {
NSLog(@"%@",progress);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"%@",error);
}];

【链接】https://github.com/MrJalen/AFNet3.0

版权声明:本文为博主原创文章,未经博主允许不得转载。

HTTPS链式编程——AFNetworking 3.0的更多相关文章

  1. 从零开始学 Web 之 jQuery(三)元素操作,链式编程,动画方法

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  2. 从零开始学 Web 之 jQuery(七)事件冒泡,事件参数对象,链式编程原理

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  3. Unity 游戏框架搭建 (十八) 静态扩展 + 泛型实现transform的链式编程

    本篇文章介绍如何实现如下代码的链式编程: C# this.Position(Vector3.one) .LocalScale(1.0f) .Rotation(Quaternion.identity); ...

  4. Unity 游戏框架搭建 (十七) 静态扩展GameObject实现链式编程

    本篇本来是作为原来 优雅的QChain的第一篇的内容,但是QChain流产了,所以收录到了游戏框架搭建系列.本篇介绍如何实现GameObject的链式编程. 链式编程的实现技术之一是C#的静态扩展.静 ...

  5. ASP.NET MVC学前篇之扩展方法、链式编程

    ASP.NET MVC学前篇之扩展方法.链式编程 前言 目的没有别的,就是介绍几点在ASP.NETMVC 用到C#语言特性,还有一些其他琐碎的知识点,强行的划分一个范围的话,只能说都跟MVC有关,有的 ...

  6. jQuery编程基础精华01(jQuery简介,顶级对象$,jQuery对象、Dom对象,链式编程,选择器)

    jQuery简介 什么是jQuery? jQuery就是一个JavaScript函数库,没什么特别的.(开源)联想SQLHelper类 jQuery能做什么?jQuery是做什么的? jQuery本身 ...

  7. iOS开发技巧系列---使用链式编程和Block来实现UIAlertView

    UIAlertView是iOS开发过程中最常用的控件之一,是提醒用户做出选择最主要的工具.在iOS8及后来的系统中,苹果更推荐使用UIAlertController来代替UIAlertView.所以本 ...

  8. jQuery插件编写及链式编程模型

    jQuery插件编写及链式编程模型小结 JQuery极大的提高了我们编写JavaScript的效率,让我们可以愉快的编写代码,做出各种特效.大多数情况下,我们都是使用别人开发的JQuery插件,今天我 ...

  9. (一一八)利用block实现链式编程

    有些时候需要不断地调用方法,如果使用传统方案,需要拿到对象多次调用,例如有一个Ball对象,实现了up.down.left.right四个方法,分别控制球的运动方向,如果要实现球向右再向下,需要这么写 ...

随机推荐

  1. IntelliJ IDEA 历史版本下载地址

    地址:https://confluence.jetbrains.com/display/IntelliJIDEA/Previous+IntelliJ+IDEA+Releases scala插件:htt ...

  2. JavaEE笔记(九)

    List.Map.Set的配置 bean package com.spring.bean; import java.util.List; import java.util.Map; import ja ...

  3. QtGUI Module's Classes

    Qt GUI C++ Classes The Qt GUI module provides the basic enablers for graphical applications written ...

  4. P1903 [国家集训队]数颜色 带修改莫队板子

    大概就是要多加一维time 然后按照(l的块,r的块,time)为关键字排序 转移区间修改还是按照莫队的方式(每个修改要记修改前后的状态) 然后玄学dalao告诉窝块大小设为\(O(n^{\frac{ ...

  5. 单元测试时 出现找不到类或者 NoClassDefFoundError 的问题

    这种情况下,启动或重启下服务器即可

  6. 一句话打印'*'图案(列表推导式, 人生苦短, 我用Python)

    ```python # coding=utf-8 print ('\n'.join(['*'*6 for i in range(4)])) # ****** # ****** # ****** # * ...

  7. Spring Cloud(二):服务注册与发现 Eureka【Finchley 版】

    Spring Cloud(二):服务注册与发现 Eureka[Finchley 版]  发表于 2018-04-15 |  更新于 2018-05-07 |  上一篇主要介绍了相关理论,这一篇开始我们 ...

  8. Datawhale MySQL 训练营 Task4 表联结

    学习内容 MySQL别名 列别名,将查询或者筛选出来列用AS 命名,如果有空格则需要引号 '' SELECT xxx AS xxxx FROM WHERE GROUP BY HAVING 表别名, 把 ...

  9. hive的优化

    hive.optimize.cp=true:列裁剪hive.optimize.prunner:分区裁剪hive.limit.optimize.enable=true:优化LIMIT n语句hive.l ...

  10. Tesseract 4 自行构建支持双引擎的tessdata 文件

    Tesseract 4 版本具备两种识别引擎:新的基于LSTM(神经网络)引擎与传统引擎.通过在初始化时设定不同的EngineMode启动. OCR Engine modes: 0 Legacy en ...