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

最新文章

  1. PHP Math 函数
  2. 【转载】使用Pandas对数据进行筛选和排序
  3. socket了解(转)
  4. Activity源码简要分析总结
  5. 详细学习ORACLE JOBS
  6. iOS -- 隐藏返回按钮
  7. ASP.NET MVC- 布署
  8. replace()、replaceFirst()和replaceAll()的区别
  9. mysql基础操作整理(一)
  10. 虎记:强大的nth-child(n)伪类选择器玩法
  11. Java多线程之synchronized(四)
  12. VI中的批量替换 (转载)
  13. 1.Java第一课:初识java
  14. NGUI---使用脚本控制聊天系统的内容显示,输入事件交互
  15. I/O输入流基础之FileInputStream
  16. mybatis 中 foreach collection的三种用法(转)
  17. 【转】C++对成员访问运算符-&gt;的重载
  18. ubuntu安装sublime-text
  19. (1.16)mysql server优化之buffer pool
  20. [转载]Oracle数据库 sql%found,sql%notfound,sql%rowcount

热门文章

  1. hdu 1325 Is It A Tree?
  2. Commons Codec - 常见的编码解码
  3. 【转】Android开发中Handler的使用
  4. 第五十篇、OC中常用的第三插件
  5. 【转】fread函数和fwrite函数
  6. stl::search
  7. jQuery自己编写插件()
  8. 把div固定在网页顶部
  9. Spring多数据源的动态切换
  10. 布局—column(属性)