网络之AFNetsorking
AFNetsorking作为功能全面的网络第三方,既通俗好用又与时俱进-及时的更新使用了NSURLSession,不得不爱。
AFNetsorking使用:
1,AFNetsorking GET请求
①:URL
②:字典存放所需的参数
#pragma mark - get请求
- (IBAction)getAction:(UIButton *)sender { // NSURL * url =[NSURL URLWithString:@"http://loaclhost/first.html"]; AFHTTPSessionManager * manager =[AFHTTPSessionManagermanager]; NSString * urlStr =@"http://localhost/logo.php"; // AFHTTPResponseSerializer * serializer
//设置响应数据的格式为二进制(NSData)
// manager.responseSerializer = [AFHTTPResponseSerializer serializer];
/** 返回的类型是后台给出的类型,设置可接受的类型 */
manager.responseSerializer.acceptableContentTypes=[NSSetsetWithObject:@"text/html"]; //设置参数
NSDictionary * dict = @{@"userName":@"jredu",@"psw":@""}; //网络请求方法
[manager GET:urlStr parameters:dict progress:^(NSProgress * _Nonnull downloadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id_Nullable responseObject) { NSString * str = [[NSStringalloc] initWithData:responseObject encoding:NSUTF8StringEncoding]; NSLog(@"成功:===%@===%@",responseObject,str); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSLog(@"失败===%@",error); }]; }
2,AFNetsorking POST请求
#pragma mark - POST请求
- (IBAction)postAction:(UIButton *)sender { //请求的URL
NSString * urlStr = @"http://localhost/login_post.php"; //>初始化单例manager
AFHTTPSessionManager * manager = [AFHTTPSessionManagermanager]; //>设置接收类型
manager.responseSerializer.acceptableContentTypes=[NSSetsetWithObject:@"text/html"]; //设置参数
NSDictionary * param = @{@"userName":@"jredu",@"psw":@""}; //>发起网络请求
[manager POST:urlStr parameters:param progress:^(NSProgress * _Nonnull uploadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id_Nullable responseObject) { NSLog(@"成功请求== %@",responseObject); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSLog(@"请求失败==%@",error);
}]; }
3,AFNetsorking 下载
4,AFNetsorking 上传
#pragma mark - 上传数据
- (IBAction)upLoadAction:(UIButton *)sender { //上传PNG图片
/*
// NSString * path=@"http://192.168.0.215/upload.php";
//
// AFHTTPSessionManager * manager=[AFHTTPSessionManager manager];
//
// [manager POST:path parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
//
// //1 将图片加载出来并转成二进制
// UIImage * image=[UIImage imageNamed:@"icon.png"];
//
// NSData * data=UIImagePNGRepresentation(image);
//
// // NSData * data2=UIImageJPEGRepresentation(image, 0.5);
//
//
// [formData appendPartWithFileData:data name:@"file" fileName:@"zhangsan.png" mimeType:@"image/png"];
//
// } progress:^(NSProgress * _Nonnull uploadProgress) {
//
// } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
// NSLog(@"成功");
// } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
// NSLog(@"失败");
// }];
*/ NSString * urlStr = @"http://localhost/upload.php"; AFHTTPSessionManager * manager = [AFHTTPSessionManagermanager];
/** 设置数据为二进制(NSData) */
manager.responseSerializer = [AFHTTPResponseSerializerserializer]; // manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"]; [manager POST:urlStr parameters:nilconstructingBodyWithBlock:^(id<AFMultipartFormData>_Nonnull formData) { UIImage * image = [UIImageimageNamed: @"icon.png"]; // NSData * data = UIImagePNGRepresentation(image);
NSData * data = UIImageJPEGRepresentation(image, 0.55); // formData =data;
[formData appendPartWithFileData:data name:@"file"fileName:@"spiderMan.jpg"mimeType:@"image/jpeg"]; } progress:^(NSProgress * _Nonnull uploadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id_Nullable responseObject) {
/** 请求网络成功 with下载的数据和请求的数据*/
NSLog(@"seccuss"); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
/** 请求网络失败,返回已经下载的数据和错误信息 */
NSLog(@"filed==%@",error); }];
}
的确,AFNetsorking 功能全面,使用也不复杂。但是想要其真正的为我所用,进一步的封装是必不可少的。
网络之AFNetsorking的更多相关文章
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...
- Android请求网络共通类——Hi_博客 Android App 开发笔记
今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...
- 网络原因导致 npm 软件包 node-sass / gulp-sass 安装失败的处理办法
如果你正在构建一个基于 gulp 的前端自动化开发环境,那么极有可能会用到 gulp-sass ,由于网络原因你可能会安装失败,因为安装过程中部分细节会到亚马逊云服务器上获取文件.本文主要讨论在不变更 ...
- Virtual Box配置CentOS7网络(图文教程)
之前很多次安装CentOS7虚拟机,每次配置网络在网上找教程,今天总结一下,全图文配置,方便以后查看. Virtual Box可选的网络接入方式包括: NAT 网络地址转换模式(NAT,Network ...
- 前端网络、JavaScript优化以及开发小技巧
一.网络优化 YSlow有23条规则,中文可以参考这里.这几十条规则最主要是在做消除或减少不必要的网络延迟,将需要传输的数据压缩至最少. 1)合并压缩CSS.JavaScript.图片,静态资源CDN ...
- 猫哥网络编程系列:HTTP PEM 万能调试法
注:本文内容较长且细节较多,建议先收藏再阅读,原文将在 Github 上维护与更新. 在 HTTP 接口开发与调试过程中,我们经常遇到以下类似的问题: 为什么本地环境接口可以调用成功,但放到手机上就跑 ...
- C# 利用性能计数器监控网络状态
本例是利用C#中的性能计数器(PerformanceCounter)监控网络的状态.并能够直观的展现出来 涉及到的知识点: PerformanceCounter,表示 Windows NT 性能计数器 ...
- nginx源码分析之网络初始化
nginx作为一个高性能的HTTP服务器,网络的处理是其核心,了解网络的初始化有助于加深对nginx网络处理的了解,本文主要通过nginx的源代码来分析其网络初始化. 从配置文件中读取初始化信息 与网 ...
- [原] KVM 虚拟化原理探究(5)— 网络IO虚拟化
KVM 虚拟化原理探究(5)- 网络IO虚拟化 标签(空格分隔): KVM IO 虚拟化简介 前面的文章介绍了KVM的启动过程,CPU虚拟化,内存虚拟化原理.作为一个完整的风诺依曼计算机系统,必然有输 ...
随机推荐
- 条件运算符(?:)和 $""替代string.Format()
1. 条件运算符(?:)根据Boolean表达式的值返回两个值之一.表达式如下: condition ? first_expression : second_expression 2. $" ...
- JQuery------$.get()和$.post()传递数据的使用方法
菜鸟教程地址: http://www.runoob.com/jquery/jquery-ref-ajax.html html(../Home/Index.cshtml) <!DOCTYPE ht ...
- ef to sqlite 实际开发问题终极解决方法
版本问题 vs安装问题 x64/x86 发布问题 针对开发中遇到的问题,通过一下方法解决: 1.sqlite下载地址http://system.data.sqlite.org/index.html/d ...
- UIButton 的属性与方法
UIButton *btn=[UIButtonbuttonWithType:UIButtonTypeCustom];//一般都是设置为该类型 btn.frame=CGRectMake(100, 80, ...
- Foundation框架—— 数组 (NSArray NSMutableArray )
基础知识回顾 1.在给可变数组添加元素时,要保证该数组已被初始化 2.在遍历可变数组时,不能对其进行增删改 3.NSMutableArray继承自NSArray,几乎拥有NSArray的一切方法. 4 ...
- AspectJ基础学习之三HelloWorld(转载)
AspectJ基础学习之三HelloWorld(转载) 一.创建项目 我们将project命名为:aspectjDemo.然后我们新建2个package:com.aspectj.demo.aspect ...
- Linux python <tab>自动补全
为Python添加交互模式下TAB自动补全以及命令历史功能. 1.获取python目录 [root@localhost ~]# python Python 2.6.6 (r266:84292, Jul ...
- XML简介
xml的简介(了解) * eXtensible Markup Language:可扩展标记型语言 ** 标记型语言:html是标记型语言 ...
- Log4Net使用方法
项目里都会用到日志记录..特别是在本地跑的欢畅..一上服务器就嗝屁的时候..日志会帮你大忙.. Log4net算是一种应用的最广泛的日志记录方式了..下面来简略的说下他的用法.. 先下载log4net ...
- javascript模块简单写法
写法1: (function (wd, doc) { var mw = {}; mw.noConflict = noConflict; var _$ = wd.$; wd.$ = mw; functi ...