最近最学习 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. java-分页之页面分页

    import java.util.ArrayList; import java.util.List; /** * * @author cheney * * @date Aug 31, 2012 */ ...

  2. SAX - DefaultHandler

    org.xml.sax.helpers.DefaultHandler 实现了 org.xml.sax.EntityResolver.org.xml.sax.DTDHandler.org.xml.sax ...

  3. Nginx - Configuration File Syntax

    Configuration Directives The Nginx configuration file can be described as a list of directives organ ...

  4. 怎么改svn的登陆账号

    svn 我想大家都很熟悉.用的也很多.可是上次遇到一个问题 ,就是用别人的svn下载的代码.选择了记住账号密码.结果提交的时候 还是用别人的不大好.结果就想改成自己的账号.第一次改 找了半天.今天给大 ...

  5. BUG修改纪录

    刚进入现在的公司,接手了一个遗留的项目,BUG频出,最近一个星期都在加班改BUG,身心疲惫,为了 现在,将来不会再被相同BUG困扰,特来纪录一下. 1.数据库设计字段时,对于int等类型最好设置默认值 ...

  6. kettle 表输入+流查询 与 数据库查询

    他们的主要区别: •流查询步骤只能进行等值查询,数据库查询步骤可以进行非等值查询 •流查询在查询之前把数据都加载到内存里,数据库查询可以选择是否把数据加载到内存. •进行等值查询时,数据库查询步骤如果 ...

  7. PHP学习笔记 - 入门篇(3)

    PHP学习笔记 - 入门篇(3) 常量 什么是常量 什么是常量?常量可以理解为值不变的量(如圆周率):或者是常量值被定义后,在脚本的其他任何地方都不可以被改变.PHP中的常量分为自定义常量和系统常量 ...

  8. PHP学习笔记 - 入门篇(2)

    PHP入门篇(2) 什么是变量 变量是用于存储值的容器,如下 $var = @"6666" 如何定义变量 定义变量就是像服务器的内存申请空间,用来存储数据,eg: <?php ...

  9. 基于AngularJS/Ionic框架开发的性能优化

    AngularJS作为强大的前端MVVM框架,虽然已经做了很多的性能优化,但是我们开发过程中的不当使用还是会对性能产生巨大影响. 下面提出几点优化的方法: 1. 使用单次绑定符号{{::value}} ...

  10. JavaScript的语法规则

    JavaScript的语法规则 JavaScript区分大小写 JavaScript脚本程序须嵌入在HTML文件中 JavaScript脚本程序中不能包含HTML标记代码 每行写一条脚本语句 语句末尾 ...