2019独角兽企业重金招聘Python工程师标准>>>
最近最学习 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]];//设置 requestNSURLRequest *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)[0];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 下载