AFNetworking 不常见要求封装(参数为Array,PUT上传图片)

参数为数组的 POST

#pragma  mark - json post 参数 array
+ (void)JsonPost:(NSString *)URLString isNeedToken:(BOOL)isNeedToken array:(NSArray *)array progress:(NetworkingProgress)progress success:(NetworkingSuccess)success failure:(NetworkingFailure)failure {
    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
    AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
    NSMutableURLRequest *request = [[AFJSONRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:URLString parameters:nil constructingBodyWithBlock:nil error:nil];
    if (isNeedToken) [request setValue:[TJMSandBoxManager getTokenModel].realToken forHTTPHeaderField:@"Authorization"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    NSData *data = [NSJSONSerialization dataWithJSONObject:array options:NSJSONWritingPrettyPrinted error:nil];
    [request setHTTPBody:data];
    __block NSURLSessionDataTask *task;
    task = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {
        if (!error) {
            [self requestSuccessWithSessionDataTask:task responseObject:responseObject success:success failure:failure];
        } else {
            [self requestFailureWithSessionDataTask:task error:error failure:failure];
        }
    }];
    [task resume];
}

PUT 上传数据(如果是上传图片,在[formData PartWithFileData:……]稍微改动就ok了)

+ (void)PUT:(NSString *)URLString isNeedToken:(BOOL)isNeedToken data:(NSData *)data parameters:(NSDictionary *)parameters progress:(NetworkingProgress)progress success:(NetworkingSuccess)success failure:(NetworkingFailure)failure {
    TJMTokenModel *tokenModel = [TJMSandBoxManager getTokenModel];
    if (tokenModel) {
        NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
        AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
        NSMutableURLRequest *request = [[AFJSONRequestSerializer serializer] multipartFormRequestWithMethod:@"PUT" URLString:URLString parameters:nil constructingBodyWithBlock:^(id  _Nonnull formData) {
            if (data) {
                [formData appendPartWithFileData:data name:@"file" fileName:@"data.txt" mimeType:@"multipart/form-data"];
            }
        } error:nil];
        if (isNeedToken) {
            [request setValue:tokenModel.realToken forHTTPHeaderField:@"Authorization"];
        } else {
            [request setValue:nil forHTTPHeaderField:@"Authorization"];
        }
        //        [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
        if (parameters && parameters.count > 0) {
            [request setHTTPBody:[NSJSONSerialization dataWithJSONObject:parameters options:NSJSONWritingPrettyPrinted error:nil]];
        }
        __block NSURLSessionDataTask *task;
        task = [manager uploadTaskWithStreamedRequest:request progress:^(NSProgress * _Nonnull uploadProgress) {
            if (progress) {
                progress(uploadProgress);
            }
        } completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {
            if (!error) {
                [self requestSuccessWithSessionDataTask:task responseObject:responseObject success:success failure:failure];
            } else {
                [self requestFailureWithSessionDataTask:task error:error failure:failure];
            }
        }];
        [task resume];
    }
}

你可能感兴趣的:(AFNetworking 不常见要求封装(参数为Array,PUT上传图片))