AFNetworking 简单应用
最近最学习 AFNetworking ,根据自己所学对 AFNetWorking 一些简单应用做了一下简单封装,主要有 get,post形式获取 xml,json,get 方式获取图片,下载文件,上传文件,代码如下:
//
// AFNetWorking_Demo.h
// AFNetWorking_Demo
//
// Created by Ager on 15/11/4.
// Copyright © 2015年 Ager. All rights reserved.
// #import <Foundation/Foundation.h> @interface AFNetWorking_Demo : NSObject /**
* get 方法请求 xml
* block success 参数类型 NSXMLParser
*/
+ (void)requestXML_GET:(NSString*)strUrl success:(void(^)(id XMLParser))success fail:(void(^)(id error))fail; /**
* post 方法请求 xml
* block success 参数类型 NSXMLParser
*/
+ (void)requestXML_POST:(NSString*)strUrl parameters:(NSString*)parameters success:(void(^)(id XMLParser))success fail:(void(^)(id error))fail; /**
* get 方法请求 JSON
* block success 参数类型为解析好的 JSON 数据 , 字典或数组
*/
+ (void)requestJSON_GET:(NSString*)strUrl success:(void(^)(id json))success fail:(void(^)(id error))fail; /**
* post 方法请求 JSON
* block success 参数类型为解析好的 JSON 数据 , 字典或数组
*/
+ (void)requestJSON_POST:(NSString*)strUrl parameters:(NSDictionary*)parameters success:(void(^)(id json))success fail:(void(^)(id error))fail; /**
* get 方法请求 img
*/
+ (void)requestIMG_GET:(NSString*)strUrl success:(void(^)(id image))success fail:(void(^)(id error))fail; /**
* 下载文件
*
* @param urlStr 要下载文件的路径
*/
+ (void)sessionDownloadWithUrl:(NSString *)urlStr success:(void (^)(NSURL *fileURL))success fail:(void (^)())fail; /**
* 上传文件
*
* @param urlStr 上传网址地址
* @param filePath 要上传的文件沙盒路径
*/
+ (void)upLoad:(NSString*)urlStr filePath:(NSString *)filePath success:(void(^)(id responseObject))success fail:(void(^)())fail; @end
AFNetWorking_Demo.h
//
// AFNetWorking_Demo.m
// AFNetWorking_Demo
//
// Created by Ager on 15/11/4.
// Copyright © 2015年 Ager. All rights reserved.
// #import "AFNetWorking_Demo.h"
#import "AFNetworking.h" @implementation AFNetWorking_Demo /**
* get 方法请求 xml
*/
+ (void)requestXML_GET:(NSString*)strUrl success:(void(^)(id XMLParser))success fail:(void(^)(id error))fail{ AFHTTPRequestOperationManager *mamager = [AFHTTPRequestOperationManager manager]; mamager.responseSerializer = [[AFXMLParserResponseSerializer alloc]init]; [mamager GET:strUrl parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { success(responseObject); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { fail(error); }]; } /**
* post 方法请求 xml
*
* parameters 为 JSON 数据类型
*/
+ (void)requestXML_POST:(NSString*)strUrl parameters:(NSString*)parameters success:(void(^)(id XMLParser))success fail:(void(^)(id error))fail{ AFHTTPRequestOperationManager *maneger = [AFHTTPRequestOperationManager manager];
//设置请求格式
maneger.requestSerializer = [[AFJSONRequestSerializer alloc]init];
//设置返回数据格式
maneger.responseSerializer = [[AFXMLParserResponseSerializer alloc]init]; [maneger POST:strUrl parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
success(responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
fail(error);
}];
} /**
* get 方法请求 json
*/
+ (void)requestJSON_GET:(NSString*)strUrl success:(void(^)(id json))success fail:(void(^)(id error))fail{ AFHTTPRequestOperationManager *mamager = [AFHTTPRequestOperationManager manager]; mamager.responseSerializer = [[AFJSONResponseSerializer alloc]init]; mamager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/plain",@"text/html",nil]; [mamager GET:strUrl parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { success(responseObject); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { fail(error); }]; } + (void)requestIMG_GET:(NSString*)strUrl success:(void(^)(id image))success fail:(void(^)(id error))fail{
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.responseSerializer = [[AFImageResponseSerializer alloc]init]; [manager GET:strUrl parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
if (success) {
success(responseObject);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if (fail) {
fail(error);
}
}];
} /**
* 文件下载
*/
+ (void)sessionDownloadWithUrl:(NSString *)urlStr success:(void (^)(NSURL *fileURL))success fail:(void (^)())fail
{ AFURLSessionManager *manage = [[AFURLSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; //设置 request
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]];
//设置下载任务
NSURLSessionDownloadTask *tast = [manage downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
//指定文件下载路径
//将下载文件保存在缓存路径中 NSString *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[];
NSString *filePath = [path stringByAppendingString:response.suggestedFilename]; // URLWithString返回的是网络的URL,如果使用本地URL,需要注意
NSURL *url = [NSURL fileURLWithPath:filePath]; if (success) {
success(url);
}
return url; } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
NSLog(@"%@---- %@", filePath, error);
if (error) {
fail();
}
}]; [tast resume];
} /**
* 文件上传
* block success 参数类型为解析好的 JSON 数据 , 字典或数组
*/
+ (void)upLoad:(NSString*)urlStr filePath:(NSString *)filePath success:(void(^)(id responseObject))success fail:(void(^)())fail{ AFURLSessionManager *manager = [[AFURLSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]]; NSURLSessionUploadTask *task = [manager uploadTaskWithRequest:request fromFile:[NSURL fileURLWithPath:filePath] progress:nil completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
if (error) {
fail();
}else{
success(responseObject);
}
}];
[task resume]; } /**
* POST - 请求JSON
* 需要导入 UIKit+AFNetworking
*/
+ (void)requestJSON_POST:(NSString*)strUrl parameters:(NSDictionary*)parameters success:(void(^)(id json))success fail:(void(^)(id error))fail{ AFHTTPRequestOperationManager *maneger = [AFHTTPRequestOperationManager manager];
//设置请求格式
maneger.requestSerializer = [[AFHTTPRequestSerializer alloc]init];
//设置返回数据格式
maneger.responseSerializer = [[AFJSONResponseSerializer alloc]init]; maneger.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/plain",@"text/html",nil]; [maneger POST:strUrl parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
success(responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
fail(error);
}];
} @end
AFNetWorking_Demo.m
AFNetworking 简单应用的更多相关文章
- AFNetworking简单用法
GET请求 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; [manager GET:URL parameters:ni ...
- iOS边练边学--AFNetWorking框架GET、Post、Download、Upload,数据解析模式以及监控联网状态
一.AFNETWorking简单使用 get请求 get请求,以后经常用NSURLSession底层的写的部分 简单的post请求 用post请求下载文件,方法很多,还可以通过upload任务来执行 ...
- AFNetworking的详细解析
AFNetworking serializer 分析 AFNetworkResponse.png 1. AFHTTPRequestOperationManager *manager = [AFHTTP ...
- AFN小结(简单的封装)
AFN小结 1,AFN概念.原理 2,AFN的封装使用 3,AFN与其它框架对比 ————————————————————————————————— 1 , AFN的概念原理: AFN的基础是NSUR ...
- HTTP请求和数据安全
/*------------------------------------- 01 HTTP请求 ---------------------------------------*/ 重点:1.超文本 ...
- Alamofire请求网络
HTTP - GET和POST请求- 如果要传递大量数据,比如文件上传,只能用POST请求- GET的安全性比POST要差些,如果包含机密/敏感信息,建议用POST- 如果仅仅是索取数据(数据查询), ...
- ios开发网络篇—HTTP协议 - 转
一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) ,通过1个URL,能找到互联网唯一的1个资源 ,URL就是资源的地址,位置,互联网上的每个资 ...
- 简述AFN(AFNetWorking 2.X)的实现分析和简单使用【转】
[转载] Axc注:版本为AFNetWorking 2.6 3.0需要修改大部分对象 一:声明本 人以前一直是使用ASI网络请求类库的.最近才开始了解使用AFNetworing这个类库.网上也肯 ...
- AFNetworking的简单使用
AFNetworking的下载地址: https://github.com/AFNetworking/AFNetworking AFNetworking的使用非常简单,创建一个类,调用一个方法就可以达 ...
随机推荐
- Android 第三方授权(微信篇)
0.申请开发者: https://open.weixin.qq.com/cgi-bin/frame?t=home/app_tmpl&lang=zh_CN 1.下载sdk包: https://o ...
- Red Hat Enterprise Linux 5安装序列号
为了保证安装的组件和订阅相匹配,红帽企业 Linux 5 需要输入一个安装号.它被用来配置安装程序来提供正确的软件包.安装号码包含在你的订阅里. 如果您没有输入安装号码,只有核心服务器或 Deskto ...
- Linux命令(6):mv命令
1.作用: 为文件或目录改名或将文件由一个目录移入另一个目录中 2.格式: mv [选项] 源文件或目录 目标文件或目录 3.常见参数: 4.使用实例: [root@localhost ~]# mv ...
- winform中文本框的一些案例
项目中经常看到在输入金额时,会加逗号,最近在复习正则表达式,就联系下,界面如下:
- [求助]谁能给我讲解一下,iOS编程要如何实时显示采集到的图像???
rt,最近搞一个高清图传,本着自(bu)主(mai)创(da)新(jiang)的原则,打算利用手中的iPad当作辅助飞行屏幕,USB传输数据.再说某疆图传7999(还只支持自家云台录像拍照),哪是我这 ...
- wpf DataGrid 双击获取当前行的控件
<DataGrid Margin="10" HorizontalAlignment="Left" VerticalAlignment="Top& ...
- css3学习笔记之背景
background-size background-size指定背景图像的大小 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 &l ...
- 工具:linux 性能监控工具-nmon
nmon 下载:http://pan.baidu.com/s/1jICoSpo 放到linux下可以直接运行. nmon 工具可以帮助在一个屏幕上显示所有重要的性能优化信息,并动态地对其进行更新. n ...
- 降kipmi0的CPU
echo 100 >/sys/module/ipmi_si/parameters/kipmid_max_busy_us
- 《RedHatlinux系统修复(通过FTP进行修复)》
比如我们删除了grub文件的initrd然后我们来修复 Linux系统下装的虚拟机boot options 位置,我们选网络修复,提前是我已经做好了ftpbootlaoder的配置. Win系统下以V ...