AFN使用讲解

iOS post上传文件 通过Http上传文件 最近做的项目中需要将拍摄的照片与视频上传至服务器,再加上也有一些朋友在问相关的问题,作为在优快云的第一篇博客,处女座就留给程序中必不可少的http吧 因为iOS不能通过html表单来进行post上传,所以iOS想要完成上传功能就要自己实现http请求 http post请求的格式是这样的 Content-type:multipart/formdata, bounda 阅读详情

在我们开发过程中,网络请求是必不可少的,对于网络框架,现在主流的大概只有三类:ASI框架: HTTP终结者(已经停止更新了),MKNetworkKit ,AFN.今天我就来浅谈一下这个AFN

    AFNetworing的使用

    

1、AFN特性 :
*登录传参数时,传递字典即可.(键名为参数名,键值为参数值).
*自动到子线程中执行,执行完后返回主线程.
*返回的结果自动序列化为NSDictionary.
2、使用AFN注意 :
*AFHTTPRequestOperationManager封装了通过HTTP协议与Web应用程序进行通讯的常用方法.(这个实例化的时候不是单例, 因为没有shared字)
*包括创建请求/响应序列化/网络监控/数据安全.
*方法等都是以AF开头的.

3、AFN能做的 (网络中的都涵盖了):
*GET/POST/PUT/DELETE/HEAD请求.
*JSON数据解析/Plist数据解析.(不支持XML数据解析)
*POSTJSON.
*上传/下载.

数据请求:
[objc]  view plain copy
  1. - (void)getJSON {    
  2.     //1.请求管理器    
  3.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];    
  4.       
  5.     //2.发起请求    
  6.     [manager GET:@"http://localhost/videos.json" parameters:nil success: ^(AFHTTPRequestOperation *operation, id responseObject) {    
  7.         NSLog(@"%@", responseObject);    
  8.     } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {    
  9.         NSLog(@"%@", error);    
  10.     }];    
  11. }    
  12.     
  13. /**  
  14.  *  不支持XML数据解析  
  15.  */    
  16. - (void)getXML {    
  17.     //1.管理器    
  18.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];    
  19.     
  20.     //2.设置返回数据类型    
  21.     manager.responseSerializer = [AFXMLParserResponseSerializer serializer]; //先实例化一下    
  22.     
  23.     //3.发起请求    
  24.     [manager GET:@"http://localhost/videos.xml" parameters:nil success: ^(AFHTTPRequestOperation *operation, id responseObject) {    
  25.         NSLog(@"%@", responseObject);    
  26.     } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {    
  27.         NSLog(@"%@", error);    
  28.     }];    
  29. }    
  30.     
  31. - (void)getPlist {    
  32.     //1.管理器    
  33.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];    
  34.     
  35.     //2.设置response类型    
  36.     manager.responseSerializer = [AFPropertyListResponseSerializer serializer]; //是Response, 别写成request了. 修改为plist类型.    
  37.     manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"]; //这个可以直接往框架里面修改.    
  38.     
  39.     //3.请求    
  40.     [manager GET:@"http://localhost/videos.plist" parameters:nil success: ^(AFHTTPRequestOperation *operation, id responseObject) {    
  41.         NSLog(@"%@", responseObject);    
  42.     } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {    
  43.         NSLog(@"%@", error);    
  44.     }];    
  45. }    



AFN上传
[objc]  view plain copy
  1. - (void)uploadImageWithImage:(NSString *)imagePath  
  2. {  
  3.     //上传其他所需参数  
  4.     NSString *userId=XXXXXXXXXXX;  
  5.     NSString *token=XXXXXXXXXXX;  
  6.      
  7.     //上传请求POST  
  8.     AFHTTPClient *client=[AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@""]];  
  9.   
  10.     NSString *urlString=[NSString stringWithFormat:@"上传服务器地址]; 
  11.     NSDictionary *dic=[[NSDictionary alloc] initWithObjectsAndKeys:userId,@"XXXXXX",token,@"XXXXXX",nil];  
  12.      
  13.     NSURLRequest *request = [client multipartFormRequestWithMethod:@"POST" path:urlString parameters:dicconstructingBodyWithBlock:^(id<AFMultipartFormData> formData) {  
  14.           
  15.         //得到需要上传的数据  
  16.         NSData *data=[NSData dataWithContentsOfFile:imagePath];  
  17.           
  18.         
  19.         //上传时使用当前的系统事件作为文件名  
  20.         NSDateFormatter *formatter = [[NSDateFormatter alloc] init];  
  21.         formatter.dateFormat = @"yyyyMMddHHmmss";  
  22.         NSString *str = [formatter stringFromDate:[NSDate date]];  
  23.         NSString *fileName = [NSString stringWithFormat:@"%@.jpg", str];  
  24.           
  25.           
  26.         /* 
  27.          此方法参数 
  28.          1. 要上传的[二进制数据] 
  29.          2. 对应网站上[upload.php中]处理文件的[字段"file"] 
  30.          3. 要保存在服务器上的[文件名] 
  31.          4. 上传文件的[mimeType] 
  32.          */  
  33.   
  34. //服务器上传文件的字段和类型  
  35.         [formData appendPartWithFileData:data name:@"XXXXX" fileName:fileNamemimeType:@"image/jpg/file"];  
  36.     }];  
  37.      
  38.     // 3. operation包装的urlconnetion  
  39.     AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];  
  40.      
  41.     [op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {  
  42.         NSLog(@"上传完成");  
  43.     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {  
  44.         NSLog(@"上传失败->%@", error);  
  45.     }];  
  46.      
  47.     //执行  
  48.     [client.operationQueue addOperation:op];  
  49. }  
宝塔部署若依前端出现502解决方法 若依系统是一个基于Java语言的开源项目,旨在帮助开发者减少开发时间,特别适用于需要快速开发出一套具有用户管理、菜单管理、权限管理、定时任务、日志管理等功能的简单系统。系统分为前后端分离、分布式等架构前后端分离部署教程然而通过宝塔来部署若依系统会遇见一些问题,特此在这里记录一下。 阅读详情

相关推荐

高频功率放大器的设计实现

摘 要 随着无线通信技术的高速发展,市场对射频电路的需求越来越大,同时对射频电路的性能要求也越来越高。高频功率放大器是位于无线发射级末端的重要部件,为了弥补信号在无线传输过程中的衰耗,要求发射机具有较大功率的输出,通信距离越远,要求的输出功率越大。在高频范围内,为了获得足够大的高频输出功率,就要采用高频功率放大器。 本次课程设计的高频功率放大器的技术指标包括输出功率、效率、功率增益、由于高频频功率放大器的输出功率比较大,耗能比较多,所以工作效率就显得比较重要。本课程设计的高频功率放大器电路由两极功率放大器

qq_43543515的博客 3万+

AFN使用过程中的注意事项以及问题总结

AFN作为ios开发中最常用的网络请求框架,但是除了最基本的功能,大家是否真的会全面的使用AFN呢? 小编就个人开发中的一些问题,总结如下: 1. 封装,这个相信大家都应该知道,用AFN的时候,一般都是会在项目中封装一个全局的工具类,单例对象负责全部的网络请求,封装的好处就是能够将一些用不到的参数放到底层处理,比如,并不是每次请求数据都要知道progress这个参数的,大家都懂我也

smaller_coder的博客 922

VINS-Fusion实战:从零搭建无人机视觉SLAM系统(附ROS配置全流程)

本文详细介绍了如何从零开始为无人机搭建基于VINS-Fusion的视觉SLAM系统。内容涵盖硬件选型(重点推荐双目相机与IMU搭配)、ROS环境配置、传感器标定、核心参数调优以及实际飞行测试与问题排解全流程,旨在帮助开发者实现稳定、精确的无人机自主定位与导航。

wasm7browser的博客 214

AFNetwork 作用和使用方法具体解释

转自:http://www.maxiaoguo.com/clothes/269.html AFNetworking是一个轻量级的iOS网络通信类库。它建立在NSURLConnection和NSOperation等类库的基础上,让非常多网络通信功能的实现变得十分简单。它支持HTTP请求和基于REST的网络服务(包含GET、POST、 PUT、DELETE等)。支持ARC。 ...

weixin_34001430的博客 417

国土变更调查中六类拓扑错误的成因分析与高效修复实践

本文深入分析了国土变更调查中六类拓扑错误的成因,包括边界不一致和不规则图形等常见问题,并提出了高效的自动化修复实践。通过智能咬合算法、引力-斥力平衡模型等核心技术,显著提升了修复效率,节省人工质检时间70%。文章还分享了实战中的避坑指南和黄金法则,为相关从业人员提供了宝贵经验。

weixin_29202213的博客 359

Unity URP管线下的Highlight Plus插件,从导入到实现物体高亮的保姆级避坑指南

本文详细解析了在Unity URP管线中使用Highlight Plus插件实现物体高亮的完整流程与常见问题解决方案。从URP环境配置、插件导入避坑到相机设置优化,提供了一套完整的保姆级指南,帮助开发者高效解决高亮效果不显示等典型问题,并包含移动端性能优化与复杂场景管理的高级技巧。

weixin_27379781的博客 408

iOS开发网络篇 一一 AFN的基本使用

一、AFN发送网络请求 知识点: 1. 使用AFN来发送网络请求: 需要创建会话管理者: AFHTTPSessionManager 对象 [AFHTTPSessionManager manager] 这个方法不是一个单例. 2. 请求路径中不能包含参数. GET请求的参数保存到一个字典中. #import "ViewController.h" #import "AFNetworkin

Guizy 4645

JLINK/SWD/STLINK下载选项区别

摘要: 本文对比了JLINK/SWD/STLINK的6种下载模式:Normal(硬件复位)、Hot plug(无复位)、Under reset(持续复位后连接)、Software reset(软件复位)、Hardware reset(全复位)和Core reset(内核复位)。重点分析了各模式的操作逻辑、适用场景及注意事项,其中Under reset模式是解决SWD禁用/程序异常的首选方案。通过对比表归纳了复位范围、NRST操作等核心差异,并给出场景选择建议:排查连接问题优先选Under reset,常规调

亚洲程序员盟主得博客 397

第三方框架AFN使用

1.AFN框架基本结构: 一、AFN框架的2个管理对象 1.AFHTTPRequestOperationManager(是对NSURLConnection的封装) 2.AFHTTPSessionManager (对NSURLSession的封装)   二、AFHTTPRequestOperationManager的具体使用 1.创建管理者

浅浅C的博客 630

全面解析智能座舱芯片参数:高通 (SA8295)vs 联发科,真实案例一行行讲给你听!

使用场景推荐芯片中低端车型 + 1屏导航语音SA8155P / MT8628(性价比高)中控+副驾+仪表+全景影像SA8255P / MT8678(性能强)高阶自动驾驶+域控融合SA8295P(顶级安全+算力)

weixin_43199439的博客 2079

BACnet协议栈基本对象BI、BO、AI、AO、AV以及device和File对象介绍

BACnet协议栈基本对象BI、BO、AI、AO、AV以及device和File对象介绍

shufawangzhang的博客 3988

AFN的简单介绍及使用

1.AFN框架基本结构: 一、AFN框架的2个管理对象 1.AFHTTPRequestOperationManager(是对NSURLConnection的封装) 2.AFHTTPSessionManager (对NSURLSession的封装)   二、AFHTTPRequestOperationManager的具体使用

bowei1105的博客 1255

滤波算法实现大全——基于匀速直线运动模型的kalman滤波算法

滤波算法实现大全——基于匀速直线运动模型的kalman滤波算法

jane0819的博客 523

iOS开发网络篇—使用AFN框架进行文件下载

1.AFN使用技巧 1.在开发的时候可以创建一个工具类,继承自我们的AFN中的请求管理者,再控制器中真正发请求的代码使用自己封装的工具类。 2.这样做的优点是以后如果修改了底层依赖的框架,那么我们修改这个工具类就可以了,而不用再一个一个的去修改。 3.该工具类一般提供一个单例方法,在该方法中会设置一个基本的请求路径。 4.该方法通常还会提供对GET或POST请求的封装。 5.在外面的时候通过该工具...

weixin_30911809的博客 262

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

AFN基本使用01

1.利用AFN发送一个GET请求,服务器返回的JSON数据/** * 利用AFN发送一个GET请求,服务器返回的JSON数据 */ - (void)getJSON { // 1.创建一个请求操作管理者 AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager]; // 声明一下

程序小白的博客 1141

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

iOS开发 之 AFNetworking3.0使用详解

1.AFN2.x 迁移至 AFN3.x AFHTTPSessionManager` is a subclass of `AFURLSessionManager` with convenience methods for making HTTP requests. When a `baseURL` is provided, requests made with the `GET` / `POST` /

Magic-ZYJ的博客 880

网络编程 AFNetworking框架的基本使用

目录: AFNetworking(AFN)框架是什么 用AFN可以带来哪些便利 AFN怎么用 AFN和ASI的区别是什么 转载于:https://www.cnblogs.com/arvink/p/5453601.html

weixin_30691871的博客 85

ios AFN相关知识

AFN是对NSURLConnction,NSURLSession的一层封装,但是运行效率没有ASI效率高,但是比使用比ASI简单. AFHTTPRequestOperationManager:封装了HTTP请求的常见处理,GET,POST请求,解析服务器JSON等; 一、2大管理对象 1.AFHTTPRequestOperationManager * 对NSURLConnection的封装

我的专栏 1125

NSUrSession和AFN

>1NSUrlSession相当于网络会话层,NSUrlConnection相当于网络连接层; >2NSUrlSession使用的步骤:      实例化网络会话;      根据网络会话和网络需求,实例化网络任务;(NSUrlSessionDataTask,NSUrlDownloadTask,TaskNSUrlSessionUploadTask)      开启网络任务(默认的网络任

zhudong10的博客 633

iOS程序猿之AFNetworking 3.0 版本使用

AFNetworking 3.0 版本使用 在Xcode7.0之后,苹果废弃了NSURLConnection方法,数据请求使用NSURLSession,作为网络请求类第三方库使用量最大的AFN也及时的更新的新的版本——AFN 3.0版本。新的版本的里废弃了基于NSURLConnection封装的AFHTTPRequestOperationManager,转而使用基于NSURLSession封装的

iOS_wq的博客 1万+

AFNetworking使用

AFN基本使用 GET请求: -(void)get1 { // 1.创建AFHTTPSessionManager管理者 // AFHTTPSessionManager内部是基于NSURLSession实现的 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; // 2.发送请求 N...

superyuan567的博客 1700

OC用AFN做Soap请求webService

最近公司做一个新项目,后台是webService,要做iOS版本的客户端,由于我以前不怎么了解这方面,所以云里雾里得摸索了两天,因为后台人员也不清楚我具体要传什么给他,所以。。。。我就两边跑。。。。最终我确定问题还是在于后端,今天上午完美解决,对webService和WSDL以及CXF有了个大概的了解。 我就不做过多的概念介绍了,我很懒不愿复制粘贴,只要说一些细节让大家少走弯路就可以。

Jack's blog 1544

iOS开发 - 第04篇 - 网络 - 04 - 文件上传 & 压缩 & AFN

1、NSURLSession断点下载2、NSURLSession小结3、文件上传4、文件压缩/解压缩5、AFN

NSRyan的博客 1154

AFNetworking的使用

AFN 1 AFN的框架结构 NSURLSession: NSURLSessionManager(对NSURLSession的封装); AFHttpSessionManager(会话管理者) 序列化处理serialization: AFURLRequestSerialization(请求); AFURLResponseSerialization(响应) 扩展功能: AFS...

a861465724的博客 191

控制器销毁时取消网络请求,防止Crash!

当进行一些网络请求时,一般都是通过AFN来做的,有可能在网络比较慢的时候,请求结果还没回来,但是此时用户已经退出了这个控制器,也就是说这个控制器已经被销毁了,但是请求还在继续,当网络请求结果回来以后,在请求成功和失败的Block里面都会调用self(也就是销毁的那个控制器)的一些方法,但是控制器已经被销毁了,这个时候就会Crash,所以为了防止这种情况,就要在控制器销毁的时候把正在进行的网络请求全

yungeIOS的博客 6412

iOS安全策略之HTTPS

1.HTTPS传输流程 2.常用加密算法 3.AFN证书校验策略及核心方法 4.SSL Pinning 5.CA证书申请流程 HTTPS经由超文本传输协议进行通信,但利用SSL/TLS来对数据包进行加密。HTTPS开发的主要目的,是提供对网络服务器的身份认证,保护交换数据的隐私与完整性 1.HTTPS传输流程   HTTPS传输流程.png 由于不相信服务器生成的随机数,所以需要...

weixin_33734785的博客 136

iOS Jsonp数据格式解析

Jsonp 数据格式,是前端js调用的函数片段,用于跨域。网上找了很多,似乎都没有iOS端的使用方法。 下面简单的说明一下iOS获取Jsonp 数据的注意事项,以及它的请求解析方法。 获取数据方法一:AFN请求,记得响应序列化responseSerializer设置为AFHTTPRequestSerializer,否则返回格式非json,会导致请求失败。在此,就不放代码了。 获取数据方法...

zhang_pengfei的博客 823
上一篇: 菊花加载
下一篇: UIImage初始化方法比较
JustinACE
博客等级 码龄12年 0粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值