對請求參數(shù)胧卤、請求頭和AFNetworking本身進(jìn)行了封裝
- ViewController顯示用法
//需要打開網(wǎng)絡(luò)請求開關(guān),并導(dǎo)入AFNetworking第三方庫
//具體封裝內(nèi)容全在BSGHTTPManager里面榜掌,使用封裝的時(shí)候直接復(fù)制過去即可使用
BSGHTTPManager * manager = [BSGHTTPManager manager];
//本請求不需要參數(shù)溶锭,以下展示參數(shù)寫法:
manager.phone = @"示例";
[manager BSGPost:@"http://api.k780.com:88/?app=life.time&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json" success:^(NSURLSessionDataTask *task, id responseDictionary) {
NSLog(@"responseDictionary:%@",responseDictionary);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"error:%@",error);
}];
- BSGHTTPManager展示封裝過程
- BSGHTTPManager.h
#import <Foundation/Foundation.h>
@interface BSGHTTPManager : NSObject
//參數(shù)
/** 手機(jī)號碼宝恶,即賬號*/
@property(nonatomic, copy) NSString * phone;
/** 密碼*/
@property(nonatomic, copy) NSString * password;
//創(chuàng)建管理者
+(instancetype)manager;
//成功返回Block
typedef void(^successBlock)(NSURLSessionDataTask * task, id responseDictionary);
//失敗返回Block
typedef void(^failureBlock)(NSURLSessionDataTask * task, NSError * error);
//POST方法
-(void)BSGPost:(NSString *)URLString success:(successBlock)success failure:(failureBlock)failture;
//GET方法
-(void)BSGGet:(NSString *)URLString success:(successBlock)success failure:(failureBlock)failture;
//Block寫在內(nèi)部的例子
-(void)BSGTest:(NSString *)aString andBlock:(void(^)(NSString *resultString))block;
@end
- BSGHTTPManager.m
#import "BSGHTTPManager.h"
#import <AFHTTPSessionManager.h>
@implementation BSGHTTPManager
+(instancetype)manager{
return [[[self class] alloc] init];
}
//AFNetworking的POST方法
-(void)BSGPost:(NSString *)URLString success:(successBlock)success failure:(failureBlock)failture
{
AFHTTPSessionManager * manager = [AFHTTPSessionManager manager];
//內(nèi)部設(shè)置請求頭
[manager.requestSerializer setValue:@"2" forHTTPHeaderField:@"type"];
[manager.requestSerializer setValue:@"1" forHTTPHeaderField:@"application"];
NSMutableDictionary * paramDic = [NSMutableDictionary dictionary];
paramDic = [self BSGGetParam];
[manager POST:URLString parameters:paramDic progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
//回傳Block數(shù)據(jù)
success(task,responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
//回傳Block數(shù)據(jù)
failture(task,error);
}];
}
//AFNetworking的GET方法
-(void)BSGGet:(NSString *)URLString success:(successBlock)success failure:(failureBlock)failture
{
AFHTTPSessionManager * manager = [AFHTTPSessionManager manager];
//內(nèi)部設(shè)置請求頭
[manager.requestSerializer setValue:@"2" forHTTPHeaderField:@"type"];
[manager.requestSerializer setValue:@"1" forHTTPHeaderField:@"application"];
NSMutableDictionary * paramDic = [NSMutableDictionary dictionary];
paramDic = [self BSGGetParam];
[manager GET:URLString parameters:paramDic progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
//回傳Block數(shù)據(jù)
success(task,responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
//回傳Block數(shù)據(jù)
failture(task,error);
}];
}
//獲取網(wǎng)絡(luò)請求參數(shù)。請求時(shí)直接將參數(shù)傳入
-(NSMutableDictionary *)BSGGetParam{
NSMutableDictionary * tmpDic = [NSMutableDictionary dictionary];
tmpDic = [self BSGAddObjectFrom:tmpDic value:self.phone key:@"phone"];
tmpDic = [self BSGAddObjectFrom:tmpDic value:self.password key:@"password"];
// tmpDic = [self BSGAddObjectFrom:tmpDic value:self.<#value#> key:@"<#content#>"];
return tmpDic;
}
/* 判斷加入請求參數(shù)的數(shù)據(jù)是否為空趴捅,如果為空則不添加垫毙,避免添加空元素報(bào)錯(cuò)*/
-(NSMutableDictionary *)BSGAddObjectFrom:(NSMutableDictionary *)anDictionary value:(NSString*)anValue key:(NSString *)anKey{
if (anValue) {
[anDictionary setObject:anValue forKey:anKey];
}
return anDictionary;
}
//測試示例
-(void)BSGTest:(NSString *)aString andBlock:(void (^)(NSString *))block
{
NSString * resultStr = [aString stringByAppendingString:@"123"];
block(resultStr);
}
@end