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. Ajax Post 类实例

    以前总是ajax请求是这样的 data:"a=1&b=2&c=3..." 而Controller也总是这样的 Action(int a,int b,int c) 很 ...

  2. mysql循环获取结果集

    do { MYSQL_RES* res = mysql_store_result(con); ) { MYSQL_ROW row; if (row = mysql_fetch_row(res)) { ...

  3. bootstrap panel 和table的使用

    一.HTML中的页面内容 <div class="col-sm-12"> <!-- <div class="m-b-md" style= ...

  4. oc必须知道的知识点

    id数据类型 1.通用的指针类型 2.没有*号 3.使用id类型时,不能给对象的属性或成员变量进行赋值 4.可以对其发送任何(存在的)消息   import与@class的区别 1.import会包含 ...

  5. js 实现动态key value(JSON字符串注意事项:key和value都要用双引号,官网指定用双引号)

    1.JSON字符串注意事项:key和value都要用双引号,官网指定用双引号,如下: var mapStr='{"a":"a","b":&q ...

  6. JS实现表格排序

    今天有点闲,写个小东西,使用JS实现点击表格标题栏实现自动排序功能,嘻嘻... 一.JS代码,文件名为code.js如下: (function($){ //插件 $.extend($,{ //命名空间 ...

  7. 使用Diagnose服务查看Azure网站诊断信息

    注意:当前操作只针对"基本"和"标准"模式的网站(也就是有独立实例的网站) 登陆网站的kudu模式:http://{yoursitename}.scm.chin ...

  8. thikphp创建共享数据config.php

    要求:前台,后台:只需要配置一个config.php 其他文件共享 默认配置是 Index/Conf/config.php Admin/Conf/config.php 代码: return array ...

  9. [LeetCode] Longest Valid Parentheses

    第一种方法,用栈实现,最容易想到,也比较容易实现,每次碰到‘)’时update max_len,由于要保存之前的‘(’的index,所以space complexity 是O(n) // 使用栈,时间 ...

  10. git alias和gitconfig配置

    [alias] st = status -sb co = checkout br = branch mg = merge ci = commit ds = diff --staged dt = dif ...