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的更多相关文章

  1. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  2. Android请求网络共通类——Hi_博客 Android App 开发笔记

    今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...

  3. 网络原因导致 npm 软件包 node-sass / gulp-sass 安装失败的处理办法

    如果你正在构建一个基于 gulp 的前端自动化开发环境,那么极有可能会用到 gulp-sass ,由于网络原因你可能会安装失败,因为安装过程中部分细节会到亚马逊云服务器上获取文件.本文主要讨论在不变更 ...

  4. Virtual Box配置CentOS7网络(图文教程)

    之前很多次安装CentOS7虚拟机,每次配置网络在网上找教程,今天总结一下,全图文配置,方便以后查看. Virtual Box可选的网络接入方式包括: NAT 网络地址转换模式(NAT,Network ...

  5. 前端网络、JavaScript优化以及开发小技巧

    一.网络优化 YSlow有23条规则,中文可以参考这里.这几十条规则最主要是在做消除或减少不必要的网络延迟,将需要传输的数据压缩至最少. 1)合并压缩CSS.JavaScript.图片,静态资源CDN ...

  6. 猫哥网络编程系列:HTTP PEM 万能调试法

    注:本文内容较长且细节较多,建议先收藏再阅读,原文将在 Github 上维护与更新. 在 HTTP 接口开发与调试过程中,我们经常遇到以下类似的问题: 为什么本地环境接口可以调用成功,但放到手机上就跑 ...

  7. C# 利用性能计数器监控网络状态

    本例是利用C#中的性能计数器(PerformanceCounter)监控网络的状态.并能够直观的展现出来 涉及到的知识点: PerformanceCounter,表示 Windows NT 性能计数器 ...

  8. nginx源码分析之网络初始化

    nginx作为一个高性能的HTTP服务器,网络的处理是其核心,了解网络的初始化有助于加深对nginx网络处理的了解,本文主要通过nginx的源代码来分析其网络初始化. 从配置文件中读取初始化信息 与网 ...

  9. [原] KVM 虚拟化原理探究(5)— 网络IO虚拟化

    KVM 虚拟化原理探究(5)- 网络IO虚拟化 标签(空格分隔): KVM IO 虚拟化简介 前面的文章介绍了KVM的启动过程,CPU虚拟化,内存虚拟化原理.作为一个完整的风诺依曼计算机系统,必然有输 ...

随机推荐

  1. sql自带函数语句

    --取数值表达式的绝对值select abs(-41)      41select abs(41)       41select abs(-41.12)   41.12select abs(41.12 ...

  2. mysql修改引擎

    1 查看系统支持的存储引擎 show engines; 2 查看表使用的存储引擎 两种方法: a.show table status from db_name where name='table_na ...

  3. Java——Swing事件处理

    import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JFrame; ...

  4. Tomcat的目录结构、处理流程、主配置文件(server.xml)释义

    参考资料: http://www.cnblogs.com/xdp-gacl/p/3744053.html http://grass51.blog.51cto.com/4356355/1123400 1 ...

  5. python中配置文件写法

    import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) print(BASE_DIR) USE ...

  6. C# Bridge Pattern(Handle/Body)

    /* ---------------------------------------------------------------------------- * This file was auto ...

  7. centos 7.0 phpize 扩展php

    phpize扩展php模块 phpize 所在目录 /usr/etc/php/bin/phpize 查看当前php配置情况 /usr/etc/php/bin/下面的php [root@localhos ...

  8. OC-block

    #import <Foundation/Foundation.h> /* block要掌握的东西 1> 如何定义block变量 int (^sumBlock)(int, int); ...

  9. servlet生命周期与工作原理

    →   Jsp的本质是Servlet,Servlet是服务器端的小程序,运行在服务器,用于处理及响应客户端的请求. Servlet和JSP的区别: servlet是特殊的Java类,必须继承HttpS ...

  10. scala入门教程:scala中的面向对象定义类,构造函数,继承

    我们知道scala中一切皆为对象,函数也是对象,数字也是对象,它是一个比java还要面向对象的语言. 定义scala的简单类 class Point (val x:Int, val y:Int) 上面 ...