最近最学习 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-2.6.1.zip 下载

AFNetworking 简单应用的更多相关文章

  1. AFNetworking简单用法

    GET请求 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; [manager GET:URL parameters:ni ...

  2. iOS边练边学--AFNetWorking框架GET、Post、Download、Upload,数据解析模式以及监控联网状态

    一.AFNETWorking简单使用 get请求 get请求,以后经常用NSURLSession底层的写的部分 简单的post请求 用post请求下载文件,方法很多,还可以通过upload任务来执行 ...

  3. AFNetworking的详细解析

    AFNetworking serializer 分析 AFNetworkResponse.png 1. AFHTTPRequestOperationManager *manager = [AFHTTP ...

  4. AFN小结(简单的封装)

    AFN小结 1,AFN概念.原理 2,AFN的封装使用 3,AFN与其它框架对比 ————————————————————————————————— 1 , AFN的概念原理: AFN的基础是NSUR ...

  5. HTTP请求和数据安全

    /*------------------------------------- 01 HTTP请求 ---------------------------------------*/ 重点:1.超文本 ...

  6. Alamofire请求网络

    HTTP - GET和POST请求- 如果要传递大量数据,比如文件上传,只能用POST请求- GET的安全性比POST要差些,如果包含机密/敏感信息,建议用POST- 如果仅仅是索取数据(数据查询), ...

  7. ios开发网络篇—HTTP协议 - 转

    一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) ,通过1个URL,能找到互联网唯一的1个资源 ,URL就是资源的地址,位置,互联网上的每个资 ...

  8. 简述AFN(AFNetWorking 2.X)的实现分析和简单使用【转】

    [转载] Axc注:版本为AFNetWorking 2.6    3.0需要修改大部分对象 一:声明本 人以前一直是使用ASI网络请求类库的.最近才开始了解使用AFNetworing这个类库.网上也肯 ...

  9. AFNetworking的简单使用

    AFNetworking的下载地址: https://github.com/AFNetworking/AFNetworking AFNetworking的使用非常简单,创建一个类,调用一个方法就可以达 ...

随机推荐

  1. CSS3 box-flex属性和box-orient属性

    比较有意思的是虽然目前没有浏览器支持box-flex,box-orient属性,但CSS3问世以来,这两个属性却一直很火.2014年阿里校招第5题要求使用CSS3中的功能实现三个矩形的布局,总的宽度为 ...

  2. HttpClient(4.3.5) - HttpClient Proxy Configuration

    Even though HttpClient is aware of complex routing scemes and proxy chaining, it supports only simpl ...

  3. Linux 命令 - tail: 打印文件的结尾部分

    命令格式 tail [OPTION]... [FILE]... 命令参数 -c, --bytes=[-]K 显示每个文件的后 K 字节内容.-n +K 则表示从第 K 字节开始输出. -f, --fo ...

  4. WDatePicker 屏蔽onchange事件的解决办法

    受下面文章的启发,使用DatePicker自带的年月日相关的change事件,可以“勉强”实现input控件的onchange(),直接上代码: 1.第一种方式:利用DatePicker提供的年.月. ...

  5. Javascript之换肤(未完待续)

    这个项目我还没有完全写出来,先记录至此.感觉是方法不对,背景图片的切换方法有Problem.如若有一大神发现了我的文章,还望指导,吾将感激不尽.日后代码还会再钻研再改改. <head> & ...

  6. asp.net中C#对象与方法 属性详解

    C#对象与方法 一.相关概念: 1.对象:现实世界中的实体 2. 类:具有相似属性和方法的对象的集合 3.面向对象程序设计的特点:封装  继承 多态 二.类的定义与语法 1.定义类: 修饰符 类名称 ...

  7. eclipse注册码生成,在eclipse3.3.x上测试可用

    这段时间刚加入一个新的项目组,项目组使用的Flex框架. 开发工具由项目组统一提供,使用的是Eclipse 3.3.0,里面包含了其他开发人员集成上去的许多插件,个人感觉比较实用.但是这个版本Ecli ...

  8. 【转载】Linux小白福利:《超容易的Linux系统管理入门书》(三)在虚拟机上安装Linux

    本篇是Linux小白最佳实践第3篇,目的就是让白菜们自己动手安装个Linux玩玩.如果你是Linux小白,请务必亲自动手来安装.不想安装多个操作系统的,虚拟机是最佳选择,一台电脑上可以用虚拟机安装7. ...

  9. CKedit在线编辑器

    在线编辑器         在实现所见即得的编辑效果. FCK            是开发者的名字的缩写 CKEditor        功能很完善的,具有,在线编辑与图片上传JS插件 UEdit  ...

  10. excl剔除不合格数据求平均值

    excl剔除不合格数据求平均值 trimmean函数 正态分布: CONFIDENCE.NORM 函数