AFNetworking的封装 项目使用
2017-05-13 18:11
507 查看
//
// BaseNetManager.h
// BaseProject
//
// Created by zhangjian on 15/10/21.
// Copyright © 2015年 zhangjian. All rights
reserved.
//
#import
#define kCompletionHandle completionHandle:(void(^)(id model,
NSError *error))completionHandle;
@interface BaseNetManager : NSObject
+ (id)GET:(NSString *)path parameters:(NSDictionary *)params
completionHandler:(void(^)(id responseObj, NSError
*error))complete;
+ (id)POST:(NSString *)path parameters:(NSDictionary *)params
completionHandler:(void(^)(id responseObj, NSError
*error))complete;
+ (NSString *)percentPathWithPath:(NSString *)path
params:(NSDictionary *)params;
@end
//
// BaseNetManager.m
// BaseProject
//
// Created by zhangjian on 15/10/21.
// Copyright © 2015年 zhangjian. All rights
reserved.
//
#import "BaseNetManager.h"
static AFHTTPSessionManager *manager = nil;
@implementation BaseNetManager
+ (AFHTTPSessionManager *)sharedAFManager{
static
dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
manager = [AFHTTPSessionManager manager];
// 此处添加了 @"text/plain" 这样才能够解析
喜马拉雅 第二个请求
manager.responseSerializer.acceptableContentTypes = [NSSet
setWithObjects:@"text/html", @"application/json", @"text/json",
@"text/javascript", @"text/plain", nil];
});
return
manager;
}
//http://cache.tuwan.com/app/?appid=1&class=heronews&mod=八卦&appid=1&appver=2.1
//方法:把path和参数拼接起来,把字符串中的中文转换为 百分号 形势,因为有的服务器不接收中文编码
+ (NSString *)percentPathWithPath:(NSString *)path
params:(NSDictionary *)params{
NSMutableString *percentPath =[NSMutableString
stringWithString:path];
NSArray
*keys = params.allKeys;
NSInteger
count = keys.count;
for (int i =
0; i < count; i++) {
if (i == 0) {
[percentPath appendFormat:@"?%@=%@", keys[i],
params[keys[i]]];
}else{
[percentPath appendFormat:@"&%@=%@", keys[i],
params[keys[i]]];
}
}
//把字符串中的中文转为%号形势
return
[percentPath
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}
+ (id)GET:(NSString *)path parameters:(NSDictionary *)params
completionHandler:(void(^)(id responseObj, NSError
*error))complete{
//打印网络请求,
DDLog 与 NSLog 功能一样
DDLogVerbose(@"Request Path: %@, params %@", path, params);
return
[[self sharedAFManager] GET:path parameters:params
success:^void(NSURLSessionDataTask * task, id responseObject)
{
complete(responseObject, nil);
}
failure:^void(NSURLSessionDataTask * task, NSError * error) {
complete(nil, error);
}];
}
+ (id)POST:(NSString *)path parameters:(NSDictionary *)params
completionHandler:(void(^)(id responseObj, NSError
*error))complete{
return
[[self sharedAFManager] POST:path parameters:params
success:^void(NSURLSessionDataTask * task, id responseObject)
{
complete(responseObject, nil);
}
failure:^void(NSURLSessionDataTask * task, NSError * error) {
[self handleError:error];
complete(nil, error);
}];
}
+ (void)handleError:(NSError *)error{
[[self new]
showErrorMsg:error]; //弹出错误信息
}
@end
// BaseNetManager.h
// BaseProject
//
// Created by zhangjian on 15/10/21.
// Copyright © 2015年 zhangjian. All rights
reserved.
//
#import
#define kCompletionHandle completionHandle:(void(^)(id model,
NSError *error))completionHandle;
@interface BaseNetManager : NSObject
+ (id)GET:(NSString *)path parameters:(NSDictionary *)params
completionHandler:(void(^)(id responseObj, NSError
*error))complete;
+ (id)POST:(NSString *)path parameters:(NSDictionary *)params
completionHandler:(void(^)(id responseObj, NSError
*error))complete;
+ (NSString *)percentPathWithPath:(NSString *)path
params:(NSDictionary *)params;
@end
//
// BaseNetManager.m
// BaseProject
//
// Created by zhangjian on 15/10/21.
// Copyright © 2015年 zhangjian. All rights
reserved.
//
#import "BaseNetManager.h"
static AFHTTPSessionManager *manager = nil;
@implementation BaseNetManager
+ (AFHTTPSessionManager *)sharedAFManager{
static
dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
manager = [AFHTTPSessionManager manager];
// 此处添加了 @"text/plain" 这样才能够解析
喜马拉雅 第二个请求
manager.responseSerializer.acceptableContentTypes = [NSSet
setWithObjects:@"text/html", @"application/json", @"text/json",
@"text/javascript", @"text/plain", nil];
});
return
manager;
}
//http://cache.tuwan.com/app/?appid=1&class=heronews&mod=八卦&appid=1&appver=2.1
//方法:把path和参数拼接起来,把字符串中的中文转换为 百分号 形势,因为有的服务器不接收中文编码
+ (NSString *)percentPathWithPath:(NSString *)path
params:(NSDictionary *)params{
NSMutableString *percentPath =[NSMutableString
stringWithString:path];
NSArray
*keys = params.allKeys;
NSInteger
count = keys.count;
for (int i =
0; i < count; i++) {
if (i == 0) {
[percentPath appendFormat:@"?%@=%@", keys[i],
params[keys[i]]];
}else{
[percentPath appendFormat:@"&%@=%@", keys[i],
params[keys[i]]];
}
}
//把字符串中的中文转为%号形势
return
[percentPath
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}
+ (id)GET:(NSString *)path parameters:(NSDictionary *)params
completionHandler:(void(^)(id responseObj, NSError
*error))complete{
//打印网络请求,
DDLog 与 NSLog 功能一样
DDLogVerbose(@"Request Path: %@, params %@", path, params);
return
[[self sharedAFManager] GET:path parameters:params
success:^void(NSURLSessionDataTask * task, id responseObject)
{
complete(responseObject, nil);
}
failure:^void(NSURLSessionDataTask * task, NSError * error) {
complete(nil, error);
}];
}
+ (id)POST:(NSString *)path parameters:(NSDictionary *)params
completionHandler:(void(^)(id responseObj, NSError
*error))complete{
return
[[self sharedAFManager] POST:path parameters:params
success:^void(NSURLSessionDataTask * task, id responseObject)
{
complete(responseObject, nil);
}
failure:^void(NSURLSessionDataTask * task, NSError * error) {
[self handleError:error];
complete(nil, error);
}];
}
+ (void)handleError:(NSError *)error{
[[self new]
showErrorMsg:error]; //弹出错误信息
}
@end
相关文章推荐
- Android项目使用support v7时遇到的各种问题
- 使用bat文件启动java 项目
- php&nbsp;项目依赖时使用Composer
- 使用VS2010的Database&nbsp;项目模板统…
- AFNetworking封装-项目使用
- AFNetworking 二次封装
- 在VS2005中报"无法添加数据库连接 该项目不适于在指定状态下使用"的解决办法
- ZiPhone&nbsp;GUI一键软破工具详细使用教程
- Total&nbsp;Video视频转换软件使用教程
- 新手必看&nbsp;WinSCP软件详细使用教程
- 不使用ISAPI或IIS wildcard实现不带扩展名URL的转向
- 新手终极宝典&nbsp;iTunes使用教程精华大全
- 新版iPhone&nbsp;PC&nbsp;Suite完全详细使用教程
- Struts+Spring+Hibernate项目中使用log4j时发生如下错误"org.apache.log4j.spi.ErrorHandler"
- XML&nbsp;问题:&nbsp;超越DOM(轻松使用&nbsp;DOM&nbsp;的技巧和诀窍)
- VC/MFC项目开发——使用回调函数为CListCtrl排序(k_eckel转自微软高校博客K_eckel's mindview
- Claw&nbsp;iPhone软件破解套件使用教程
- 使用GPRS&nbsp;让你的iPhone能上网能通话教程
- 只有企业级项目才特别需要使用ORM & 解剖PetShop
- iPhone必用&nbsp;installer软件详细使用教程