NSURLSession的POST请求及封装

来源:互联网 发布:淘宝免费申请试用几次 编辑:程序博客网 时间:2024/05/22 15:36
这是在.h文件中的声明,需要声明两个block用来回调
#import <Foundation/Foundation.h>typedef void(^SuccessBlock)(id newData, NSURLResponse * response);typedef void(^FailureBlock)(NSError * error);@interface NetworkForSession : NSObject+(void)sessionPostRequsetWithUrl:(NSString *)url Parameters:(NSDictionary *)parameters ResponseBlockWithSuccess:(SuccessBlock)success AndFailureBlock:(FailureBlock)failure;@end


上.m文件中代码

#import "NetworkForSession.h"@implementation NetworkForSession+(void)sessionPostRequsetWithUrl:(NSString *)url Parameters:(NSDictionary *)parameters ResponseBlockWithSuccess:(SuccessBlock)success AndFailureBlock:(FailureBlock)failure{    //异步post        NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];        //设置请求方式    [request setHTTPMethod:@"POST"];            //设置超时    [request setTimeoutInterval:30.0f];            //(3)设置请求头    //[request setAllHTTPHeaderFields:nil];        //设置请求体    if (parameters != nil) {        NSArray * keyArray = [parameters allKeys];        NSMutableArray * newParameterArray = [NSMutableArray array];        for (int i = 0; i < keyArray.count; i++) {                        NSString * str = [[keyArray[i] stringByAppendingString:@"="] stringByAppendingString:[parameters[keyArray[i]] isKindOfClass:[NSString class]] ? parameters[keyArray[i]] : [NSString stringWithFormat:@"%@", parameters[keyArray[i]]]];            [newParameterArray addObject:str];        }                NSMutableString * httpBody = [NSMutableString string];                for (int i = 0; i < newParameterArray.count; i++) {            [httpBody appendString:[newParameterArray[i] stringByAppendingString:@"&"]];        }        [httpBody deleteCharactersInRange:NSMakeRange(httpBody.length - 1, 1)];        [request setHTTPBody:[httpBody dataUsingEncoding:NSUTF8StringEncoding]];    }else{        [request setHTTPBody:nil];    }            //构造session    NSURLSession * session = [NSURLSession sharedSession];    NSURLSessionDataTask * task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        id newData = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];        if (error) {            failure(error);        }else{            success(newData, response);        }    }];    [task resume];}@end




1 0
原创粉丝点击