使用范例:
[Downloader downloaderWithURLString:@"http://c.3g.163.com/nc/topicset/android/v4/subscribe/news/all.html" method:@"GET" param:nil passValueBlock:^(id data) {
NSLog(@"%@", data);
}];
在.h中
#import <Foundation/Foundation.h>
//用block回传值
typedef void(^PassValue)(id data);
@interface Downloader : NSObject
//网络请求
+ (void)downloaderWithURLString:(NSString *)urlString method:(NSString *)method param:(NSDictionary *)parmDict passValueBlock:(PassValue)pv;
@end
在.m中
#import "Downloader.h"
@implementation Downloader
//网络请求
+ (void)downloaderWithURLString:(NSString *)urlString method:(NSString *)method param:(NSDictionary *)parmDict passValueBlock:(PassValue)pv
{
NSMutableURLRequest *request = nil;
if ([method isEqualToString:@"GET"]) {
request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlString]];
} else if([method isEqualToString:@"POST"]) {
request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlString]];
//请求方法
[request setHTTPMethod:@"POST"];
//请求参数
//创建字符串拼接
NSMutableString *str = [NSMutableString string];
//判断参数字典不为空
if (parmDict != nil) {
//遍历字典
for (NSString *key in parmDict) {
//参数的拼接 效果如:&username=123
NSString *s = [NSString stringWithFormat:@"%@=%@", key, parmDict[key]];
//拼接到一起效果如:&username=123&password=123&id=123
[str appendString:s];
}
//去掉第一个&字符 效果:username=123&password=123&id=123
[str deleteCharactersInRange:NSMakeRange(0, 1)];
}
//将字符串转换成data
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
//设置body
[request setHTTPBody:data];
}
//创建session
NSURLSession *session = [NSURLSession sharedSession];
//创建对话
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
//里面的data的值并不知道何时执行,取不出来
//调用block传值
pv(data);
}];
//恢复对话
[task resume];
}
@end