iOS AFN2.0请求封装使用

来源:互联网 发布:二次元背景拍照软件 编辑:程序博客网 时间:2024/04/30 09:24

//

//  XMHttp.h

//  podAFNetwork

//

//  Created by mifit on 15/9/14.

//  Copyright (c) 2015 mifit. All rights reserved.

//


#import <Foundation/Foundation.h>

#import "AFNetworking.h"


/** 常用json格式

 NSArray *g = @[@"fds",@"fds",@"fds"];

 NSDictionary *d = @{@"10":@"type"};

 BOOL b = @YES;

 NSNumber n = @1;

 

 备注:参数不对返回错误;

 */


/**

 @param operation       请求

 @param responseObject  请求返回的数据

 */

typedef void (^successBlock)(AFHTTPRequestOperation *operation,id responseObject);


/**

 @param operation       请求

 @param error           请求错误信息

 */

typedef void (^failureBlock)(AFHTTPRequestOperation *operation,NSError *error);


@interface XMHttp : NSObject

#pragma mark - setting

/**

 设置请求的格式,只对postget有用

 @param block  网络变化:AFNetworkReachabilityStatusReachableViaWWANAFNetworkReachabilityStatusReachableViaWiFiAFNetworkReachabilityStatusNotReachable

 */

+ (void)http_rechablityChanged:(void(^)(AFNetworkReachabilityStatus status))block;


/**

 设置请求的格式,只对postget使用AFHTTPRequestOperationManager

 @param rs  请求格式:AFHTTPRequestSerializer AFJSONRequestSerializer

 */

+ (void)setRequestSerializer:(AFHTTPRequestSerializer *)rs;


/**

 设置响应的格式,只对postget使用AFHTTPRequestOperationManager

 @param rs  响应格式:AFHTTPResponseSerializer AFImageResponseSerializer AFXMLParserResponseSerializer AFJSONResponseSerializer

 php->AFHTTPResponseSerializer  html->GET

 */

+ (void)setResponseSerializer:(AFHTTPResponseSerializer *)rs;


#pragma mark - get or post

/**

 发送GETPOST请求,使用AFHTTPRequestOperationManager

 @param urlStr      请求url

 @param params      请求参数

 @param mtype       文件类型参数,POST请求时候,paramsNSData数据需写,上传通道为对应NSDatakey,具体值下面有

 @param httpMethod  请求方法:GET POST

 @param blockS      请求成功block

 @param blockF      请求失败block

 */

+ (AFHTTPRequestOperation *)http_RequestWithURL:(NSString *)     url

                                        params:(NSDictionary *) params

                                    httpMethod:(NSString *)     httpMethod

                                      mimeType:(NSString *)     mtype

                                       success:(successBlock)   blockS

                                       failure:(failureBlock)   blockF;

/**

 简单发送GETPOST发送请求

 @param urlStr      请求url

 @param params      请求参数

 @param httpMethod  请求方法:GET POST

 @param blockS      请求成功block

 @param blockF      请求失败block

 */

+ (AFHTTPRequestOperation *)http_RequestWithURL:(NSString *)        url

                                         params:(NSDictionary *)    params

                                     httpMethod:(NSString *)        httpMethod

                                        success:(successBlock)      blockS

                                        failure:(failureBlock)      blockF;


/**

 发送GETPOST发送请求,可设置请求头

 @param urlStr      请求url

 @param header      请求头,可为nilkey:URLConnection"Content-Type"Date"Set-Cookie""Transfer-Encoding"

 @param params      请求参数

 @param httpMethod  请求方法:GET POST

 @param blockS      请求成功block

 @param blockF      请求失败block

 */

+ (AFHTTPRequestOperation *)http_RequestWithURL:(NSString *)        url

                                  requestHeader:(NSDictionary *)    header

                                         params:(NSDictionary *)    params

                                     httpMethod:(NSString *)        httpMethod

                                        success:(successBlock)      blockS

                                        failure:(failureBlock)      blockF;


/**

 发送Get请求,使用AFHTTPRequestOperationManager

 @param urlStr  请求url

 @param blockS  请求成功block

 @param blockF  请求失败block

 */

+ (void)http_Get:(NSString *)   urlStr

         success:(successBlock) blockS

         failure:(failureBlock) blockF;


/**

 发送Get请求,使用AFHTTPRequestOperationManager

 @param urlStr  请求url

 @param params  请求参数

 @param blockS  请求成功block

 @param blockF  请求失败block

 */

+ (void)http_Get:(NSString *)       urlStr

      parameters:(NSDictionary *)   params

         success:(successBlock)     blockS

         failure:(failureBlock)     blockF;


/**

 发送Post请求,使用AFHTTPRequestOperationManager

 @param urlStr  请求url

 @param params  请求参数

 @param blockS  请求成功block

 @param blockF  请求失败block

 */

+ (void)http_Post:(NSString *)      urlStr

       parameters:(NSDictionary *)  params

          success:(successBlock)    blockS

          failure:(failureBlock)    blockF;


/**

 发送Post请求,body带二进制文件数据,可供用户上传图片之类,使用AFHTTPRequestOperationManager

 @param urlStr  请求url

 @param params  请求参数

 @param path    文件路径

 @param type    文件类型

 @param blockS  请求成功block

 @param blockF  请求失败block

 */

+ (void)http_Posts:(NSString *)     urlStr

        parameters:(NSDictionary *) params

          filePath:(NSString *)     path

          fileType:(NSString *)     type

           success:(successBlock)   blockS

           failure:(failureBlock)   blockF;


/**

 发送Post请求,body带二进制文件数据,可供用户上传图片之类,使用AFHTTPRequestOperationManager

 @param urlStr      请求url

 @param params      请求参数

 @param data        文件数据

 @param type        文件类型

 @param fileName    文件名字,必须带后缀,不能空

 @param mimeType    文件mimeTypetext/htmlHTML文档)

                                 application/xhtml+xmlXHTML文档)

                                 image/gifGIF图像)

                                 image/jpegJPEG图像)【PHP中为:image/pjpeg

                                 image/pngPNG图像)【PHP中为:image/x-png

                                 video/mpegMPEG动画)

                                 application/octet-stream(任意的二进制数据)

                                 application/pdfPDF文档)

                                 application/mswordMicrosoft Word文件)

                                 message/rfc822RFC 822形式)

                                 multipart/alternativeHTML邮件的HTML形式和纯文本形式,相同内容使用不同形式表示)

                                 application/x-www-form-urlencoded(使用HTTPPOST方法提交的表单)

                                 multipart/form-data(同上,但主要用于表单提交时伴随文件上传的场合)

 @param blockS      请求成功block

 @param blockF      请求失败block

 */

+ (void)http_Posts:(NSString *)     urlStr

        parameters:(NSDictionary *) params

          fileData:(NSData *)       data

          fileType:(NSString *)     type

          fileName:(NSString *)     fileName

          mimeType:(NSString *)     mimeType

           success:(successBlock)   blockS

           failure:(failureBlock)   blockF;


#pragma mark - down or up load


/**

 下载文件,没进度,缓存本地

 @param urlStr              请求url

 @param path                文件路径,不包含文件名;pathnil,文件下载到沙河的Document目录下

 @param completionHandler   响应blockresponse:请求;responseObject:相应数据;error:错误信息

 */

+ (void)http_Down:(NSString *)  urlStr

         savePath:(NSString *)  path

   completedBlock:(void (^)(NSURLResponse *response,NSURL *filePath,NSError *error))completionHandler;


/**

 下载文件,有进度,缓存本地

 @param urlStr      请求url

 @param path        文件完整路径;pathnil,文件下载到沙河的Document目录下

 @param progress    进度回调百分比

 @param blockS      请求成功block

 @param blockF      请求失败block

 */

+ (void)http_Down:(NSString *)      urlStr

         savePath:(NSString *)      path

         progress:(void (^)(CGFloat progress))progress

          success:(successBlock)    blockS

          failure:(failureBlock)    blockF;


/**

 下载文件,没进度,不缓存本地

 @param urlImage    图片url

 @param blockS      请求成功blockresponseObject就是UIImage图片

 @param blockF      请求失败block

 */

+ (void)http_DownImage:(NSString *)     urlImage

               success:(successBlock)   blockS

               failure:(failureBlock)   blockF;


/**

 下载文件,有进度,缓存本地

 @param urlImage    图片url

 @param blockS      请求成功blockresponseObject就是UIImage图片

 @param blockF      请求失败block

 */

+ (void)http_DownImage:(NSString *)     urlImage

              progress:(void (^)(CGFloat progress))progress

               success:(successBlock)   blockS

               failure:(failureBlock)   blockF;



/**

 上传文件,没进度

 @param urlStr              上传url

 @param path                文件路径,包含文件名

 @param completionHandler   响应blockresponse:请求;responseObject:相应数据;error:错误信息

 */

+ (void)http_Upload:(NSString *)    url

               path:(NSString *)    path

     completedBlock:(void (^)(NSURLResponse *response,id responseObject,NSError *error))completionHandler;

@end



//

//  XMHttp.m

//  podAFNetwork

//

//  Created by mifit on 15/9/14.

//  Copyright (c) 2015 mifit. All rights reserved.

//


#import "XMHttp.h"


@implementation XMHttp

+ (void)http_rechablityChanged:(void(^)(AFNetworkReachabilityStatus status))block

{

    NSURL *baseURL = [NSURLURLWithString:@"www.apple.com"];

    AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManageralloc]initWithBaseURL:baseURL];

    [manager.reachabilityManagersetReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {

        block(status);

    }];

}


+ (void)setRequestSerializer:(AFHTTPRequestSerializer *)rs{

    [XMHttp requestManager].requestSerializer = rs;

}


+ (void)setResponseSerializer:(AFHTTPResponseSerializer *)rs{

    [XMHttp requestManager].responseSerializer = rs;

}


+ (AFHTTPRequestOperationManager *)requestManager

{

    static dispatch_once_t onceToken;

    staticAFHTTPRequestOperationManager *ma;

    dispatch_once(&onceToken, ^{

        ma = [AFHTTPRequestOperationManagermanager];

        ma.responseSerializer = [AFJSONResponseSerializerserializer];

    });

    return ma;

}


+ (AFURLSessionManager *)sessionManager

{

    static dispatch_once_t onceToken;

    staticAFURLSessionManager *ma;

    dispatch_once(&onceToken, ^{

        NSURLSessionConfiguration *configuration = [NSURLSessionConfigurationdefaultSessionConfiguration];

        ma = [[AFURLSessionManageralloc]initWithSessionConfiguration:configuration];

    });

    return ma;

}

#pragma mark - get

/// Get

+ (void)http_Get:(NSString *)urlStr

         success:(successBlock)blockS

         failure:(failureBlock)blockF

{

    AFHTTPRequestOperationManager *manager = [XMHttprequestManager];

    

    [manager GET:urlStr parameters:nil success:^(AFHTTPRequestOperation *operation,id responseObject) {

        //NSLog(@"JSON: %@", responseObject);

        blockS(operation,responseObject);

    } failure:^(AFHTTPRequestOperation *operation,NSError *error) {

        //NSLog(@"Error: %@", error);

        blockF(operation,error);

    }];

}


/// Get

+ (void)http_Get:(NSString *)urlStr

      parameters:(NSDictionary *)params

         success:(successBlock)blockS

         failure:(failureBlock)blockF

{

    AFHTTPRequestOperationManager *manager = [XMHttprequestManager];

    [manager GET:urlStr parameters:params success:^(AFHTTPRequestOperation *operation,id responseObject) {

        //NSLog(@"JSON: %@", responseObject);

        blockS(operation,responseObject);

    } failure:^(AFHTTPRequestOperation *operation,NSError *error) {

        //NSLog(@"Error: %@", error);

        blockF(operation,error);

    }];

}


#pragma mark - post

+(AFHTTPRequestOperation *)http_RequestWithURL:(NSString *)     url

                                        params:(NSDictionary *) params

                                    httpMethod:(NSString *)     httpMethod

                                      mimeType:(NSString *)     mtype

                                       success:(successBlock)   blockS

                                       failure:(failureBlock)   blockF

{

    //创建request请求管理对象

    AFHTTPRequestOperationManager * manager = [selfrequestManager];

    AFHTTPRequestOperation * operation =nil;

    //GET请求

    NSComparisonResult comparison1 = [httpMethodcaseInsensitiveCompare:@"GET"];

    

    if (comparison1 == NSOrderedSame) {

        operation =[manager GET:url parameters:params success:^(AFHTTPRequestOperation *operation,id responseObject) {

            if (blockS != nil) {

                blockS(responseObject,responseObject);

            }

        } failure:^(AFHTTPRequestOperation *operation,NSError *error) {

            if (blockF != nil) {

                blockF(operation,error);

            }

        }];

    }

    

    //POST请求

    NSComparisonResult comparisonResult2 = [httpMethodcaseInsensitiveCompare:@"POST"];

    if (comparisonResult2 == NSOrderedSame)

    {

        //标示

        BOOL isFile = NO;

        NSString *dataKey;

        for (NSString * keyin params.allKeys)

        {

            id value = params[key];

            //判断请求参数是否是文件数据

            if ([value isKindOfClass:[NSData class]]) {

                isFile = YES;

                dataKey = key;

                break;

            }

        }

        

        if (!isFile) {

            //参数中没有文件,则使用简单的post请求

            operation = [manager POST:url

                          parameters:params

                             success:^(AFHTTPRequestOperation *operation,id responseObject) {

                                 if (blockS !=nil) {

                                     blockS(operation,responseObject);

                                 }

                             } failure:^(AFHTTPRequestOperation *operation,NSError *error) {

                                 if (blockF !=nil) {

                                     blockF(operation,error);

                                 }

                             }];

        } else {

            NSString *fileName = [NSStringstringWithFormat:@"uploadFile.%@",[mtypelastPathComponent]];

            operation =[manager POST:url

                          parameters:params

           constructingBodyWithBlock:^(id formData) {

               [formData appendPartWithFileData:params[dataKey]

                                           name:dataKey

                                       fileName:fileName

                                       mimeType:mtype];

           } success:^(AFHTTPRequestOperation *operation,id responseObject) {

               if (blockS != nil) {

                   blockS(operation,responseObject);

               }

           } failure:^(AFHTTPRequestOperation *operation,NSError *error) {

               if (blockF != nil) {

                   blockF(operation,error);

               }

           }];

        }

    }

    //设置返回数据的解析方式

    operation.responseSerializer = [AFJSONResponseSerializerserializerWithReadingOptions:NSJSONReadingMutableContainers];

    return operation;

}


+ (AFHTTPRequestOperation *)http_RequestWithURL:(NSString *)        url

                                         params:(NSDictionary *)    params

                                     httpMethod:(NSString *)        httpMethod

                                        success:(successBlock)      blockS

                                        failure:(failureBlock)      blockF

{

    NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:[NSURLURLWithString:url]cachePolicy:NSURLRequestReloadIgnoringCacheDatatimeoutInterval:10];

    //get请求

    NSComparisonResult compResult1 =[httpMethodcaseInsensitiveCompare:@"GET"];

    if (compResult1 == NSOrderedSame) {

        [request setHTTPMethod:@"GET"];

        if(params != nil)

        {

            //添加参数,将参数拼接在url后面

            NSMutableString *paramsString = [NSMutableStringstring];

            NSArray *allkeys = [params allKeys];

            for (NSString *keyin allkeys) {

                NSString *value = [params objectForKey:key];

                [paramsString appendFormat:@"&%@=%@", key, value];

            }

            

            if (paramsString.length >0) {

                [paramsString replaceCharactersInRange:NSMakeRange(0,1)withString:@"?"];

                //重新设置url

                [request setURL:[NSURLURLWithString:[urlstringByAppendingString:paramsString]]];

            }

        }

    }

    //post请求

    NSComparisonResult compResult2 = [httpMethodcaseInsensitiveCompare:@"POST"];

    if (compResult2 == NSOrderedSame) {

        [request setHTTPMethod:@"POST"];

        for (NSString *keyin params) {

            NSString *v = params[key];

            [request setHTTPBody:[vdataUsingEncoding:NSASCIIStringEncodingallowLossyConversion:YES]];

        }

    }

    //发送请求

    AFHTTPRequestOperation *requstOperation = [[AFHTTPRequestOperationalloc]initWithRequest:request];

    //设置返回数据的解析方式(这里暂时只设置了json解析)

    requstOperation.responseSerializer = [AFJSONResponseSerializerserializer];

    [requstOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation,id responseObject) {

        if (blockS != nil) {

            blockS(operation,responseObject);

        }

    } failure:^(AFHTTPRequestOperation *operation,NSError *error) {

        if (blockF != nil) {

            blockF(operation,error);

        }

    }];

    [requstOperation start];

    return requstOperation;

}

/// url为请求地址,params是请求体,传字典进去,,httpMethod是请求方式,block是请求完成做得工作,header是请求头,也是传字典过去(发送请求获得json数据),如果没有则传nil,如果只有value而没有key,则key可以设置为anykey


+ (AFHTTPRequestOperation *)http_RequestWithURL:(NSString *)        url

                                  requestHeader:(NSDictionary *)    header

                                         params:(NSDictionary *)    params

                                     httpMethod:(NSString *)        httpMethod

                                        success:(successBlock)      blockS

                                        failure:(failureBlock)      blockF

{

    NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:[NSURLURLWithString:url]cachePolicy:NSURLRequestReloadIgnoringCacheDatatimeoutInterval:10];

    //添加请求头

    for (NSString *keyin header.allKeys) {

        [request addValue:header[key] forHTTPHeaderField:key];

    }

    

    //get请求

    NSComparisonResult compResult1 =[httpMethodcaseInsensitiveCompare:@"GET"];

    if (compResult1 == NSOrderedSame) {

        [request setHTTPMethod:@"GET"];

        if(params != nil)

        {

            //添加参数,将参数拼接在url后面

            NSMutableString *paramsString = [NSMutableStringstring];

            NSArray *allkeys = [params allKeys];

            for (NSString *keyin allkeys) {

                NSString *value = [params objectForKey:key];

                [paramsString appendFormat:@"&%@=%@", key, value];

            }

            

            if (paramsString.length >0) {

                [paramsString replaceCharactersInRange:NSMakeRange(0,1)withString:@"?"];

                //重新设置url

                [request setURL:[NSURLURLWithString:[urlstringByAppendingString:paramsString]]];

            }

        }

    }

    //post请求

    NSComparisonResult compResult2 = [httpMethodcaseInsensitiveCompare:@"POST"];

    if (compResult2 == NSOrderedSame) {

        [request setHTTPMethod:@"POST"];

        for (NSString *keyin params) {

            [request setHTTPBody:[params[key]dataUsingEncoding:NSASCIIStringEncoding]];

        }

    }

    //发送请求

    AFHTTPRequestOperation *requstOperation = [[AFHTTPRequestOperationalloc]initWithRequest:request];

    //设置返回数据的解析方式(这里暂时只设置了json解析)

    requstOperation.responseSerializer = [AFJSONResponseSerializerserializer];

    [requstOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation,id responseObject) {

        if (blockS != nil) {

            blockS(operation,responseObject);

        }

    } failure:^(AFHTTPRequestOperation *operation,NSError *error) {

        if (blockF != nil) {

            blockF(operation,error);

        }

    }];

    [requstOperation start];

    return requstOperation;

}


/// Post

+ (void)http_Post:(NSString *)urlStr

       parameters:(NSDictionary *)params

          success:(successBlock)blockS

          failure:(failureBlock)blockF

{

    AFHTTPRequestOperationManager *manager = [XMHttprequestManager];

    [manager POST:urlStr parameters:params success:^(AFHTTPRequestOperation *operation,id responseObject) {

        //NSLog(@"JSON: %@", responseObject);

        blockS(operation,responseObject);

    } failure:^(AFHTTPRequestOperation *operation,NSError *error) {

        //NSLog(@"Error: %@", error);

        blockF(operation,error);

    }];

}


/// Posts  body,可用于上传文件

+ (void)http_Posts:(NSString *)urlStr

        parameters:(NSDictionary *)params

          filePath:(NSString *)path

          fileType:(NSString *)type

           success:(successBlock)blockS

           failure:(failureBlock)blockF

{

    AFHTTPRequestOperationManager *manager = [XMHttprequestManager];

    NSURL *filePath = [NSURLfileURLWithPath:path];

    [manager POST:urlStrparameters:paramsconstructingBodyWithBlock:^(id<AFMultipartFormData> formData) {

        [formData appendPartWithFileURL:filePathname:typeerror:nil];

    } success:^(AFHTTPRequestOperation *operation,id responseObject) {

        //NSLog(@"Success: %@", responseObject);

        blockS(operation,responseObject);

    } failure:^(AFHTTPRequestOperation *operation,NSError *error) {

        //NSLog(@"Error: %@", error);

        blockF(operation,error);

    }];

}


+ (void)http_Posts:(NSString *)urlStr

        parameters:(NSDictionary *)params

          fileData:(NSData *)data

          fileType:(NSString *)type

          fileName:(NSString *)fileName

          mimeType:(NSString *)mimeType

           success:(successBlock)blockS

           failure:(failureBlock)blockF

{

    AFHTTPRequestOperationManager *manager = [XMHttprequestManager];

    [manager POST:urlStrparameters:paramsconstructingBodyWithBlock:^(id<AFMultipartFormData> formData) {

        [formData appendPartWithFileData:data name:type fileName:fileName mimeType:mimeType];

    } success:^(AFHTTPRequestOperation *operation,id responseObject) {

        //NSLog(@"Success: %@", responseObject);

        blockS(operation,responseObject);

    } failure:^(AFHTTPRequestOperation *operation,NSError *error) {

        //NSLog(@"Error: %@", error);

        blockF(operation,error);

    }];

}


#pragma mark - down load

/// Down

+ (void)http_Down:(NSString *)urlStr

         savePath:(NSString *)path

   completedBlock:(void (^)(NSURLResponse *response,NSURL *filePath,NSError *error))completionHandler

{

    AFURLSessionManager *manager = [XMHttpsessionManager];

    

    NSURL *url = [NSURLURLWithString:urlStr];

    NSURLRequest *request = [NSURLRequestrequestWithURL:url];

    

    NSURLSessionDownloadTask *downloadTask = [managerdownloadTaskWithRequest:requestprogress:nildestination:^NSURL *(NSURL *targetPath,NSURLResponse *response) {

        NSURL *documentsDirectoryURL;

        if (path == nil) {

            documentsDirectoryURL = [[NSFileManagerdefaultManager]URLForDirectory:NSDocumentDirectoryinDomain:NSUserDomainMaskappropriateForURL:nilcreate:NOerror:nil];

        } else {

            // URLWithString返回的是网络的URL,如果使用本地URL,需要注意

            documentsDirectoryURL = [NSURL fileURLWithPath:path];

        }

        return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]];

    } completionHandler:^(NSURLResponse *response,NSURL *filePath,NSError *error) {

        //NSLog(@"File downloaded to: %@", filePath);

        completionHandler(response,filePath,error);

    }];

    [downloadTask resume];

}


+ (void)http_Down:(NSString *)urlStr

         savePath:(NSString *)path

         progress:(void (^)(CGFloat progress))progress

          success:(successBlock)blockS

          failure:(failureBlock)blockF

{

    NSURLRequest *request = [NSURLRequestrequestWithURL:[NSURLURLWithString:urlStr]];

    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperationalloc]initWithRequest:request];

    operation.outputStream = [NSOutputStreamoutputStreamToFileAtPath:pathappend:YES];

    [operation setDownloadProgressBlock:^(NSUInteger bytesRead,longlong totalBytesRead,longlong totalBytesExpectedToRead) {

        float prog = ((float)totalBytesRead) / (totalBytesExpectedToRead);

        progress(prog);

    }];    //成功和失败回调

    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation,id responseObject) {

        blockS(operation,responseObject);

    } failure:^(AFHTTPRequestOperation *operation,NSError *error) {

        blockF(operation,error);

    }];

    [operation start];

}


+ (void)http_DownImage:(NSString *)urlImage

               success:(successBlock)blockS

               failure:(failureBlock)blockF

{

    NSURLRequest *request = [NSURLRequestrequestWithURL:[NSURLURLWithString:urlImage]];

    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperationalloc]initWithRequest:request];

    operation.responseSerializer = [AFImageResponseSerializerserializer];

    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation,id responseObject) {

        blockS(operation,responseObject);

    } failure:^(AFHTTPRequestOperation *operation,NSError *error) {

        blockF(operation,error);

    }];

    [operation start];

}


+ (void)http_DownImage:(NSString *)urlImage

              progress:(void (^)(CGFloat progress))progress

               success:(successBlock)blockS

               failure:(failureBlock)blockF

{

    NSURLRequest *request = [NSURLRequestrequestWithURL:[NSURLURLWithString:urlImage]];

    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperationalloc]initWithRequest:request];

    operation.responseSerializer = [AFImageResponseSerializerserializer];

    [operation setDownloadProgressBlock:^(NSUInteger bytesRead,longlong totalBytesRead,longlong totalBytesExpectedToRead) {

        CGFloat pro = totalBytesRead / (double)totalBytesExpectedToRead;

        progress(pro);

    }];

    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation,id responseObject) {

        blockS(operation,responseObject);

    } failure:^(AFHTTPRequestOperation *operation,NSError *error) {

        blockF(operation,error);

    }];

    [operation start];

}


#pragma mark - up load

//-------------------------------------------------

/// Upload

+ (void)http_Upload:(NSString *)url

               path:(NSString *)path

     completedBlock:(void (^)(NSURLResponse *response,id responseObject,NSError *error))completionHandler

{

    AFURLSessionManager *manager = [XMHttpsessionManager];

    NSURL *URL = [NSURLURLWithString:url];

    NSURLRequest *request = [NSURLRequestrequestWithURL:URL];

    

    NSURL *filePath = [NSURLfileURLWithPath:path];

    NSURLSessionUploadTask *uploadTask = [manageruploadTaskWithRequest:requestfromFile:filePath progress:nilcompletionHandler:^(NSURLResponse *response,id responseObject,NSError *error) {

        completionHandler(response,responseObject,error);

    }];

    [uploadTask resume];

}


/// Upload with progress

+ (void)http_UploadProgress{}


#pragma mark - task

+ (void)http_Task

{

    AFURLSessionManager *manager = [XMHttpsessionManager];

    NSURL *URL = [NSURLURLWithString:@"http://example.com/upload"];

    NSURLRequest *request = [NSURLRequestrequestWithURL:URL];

    NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse *response,id responseObject,NSError *error) {

        if (error) {

            NSLog(@"Error: %@", error);

        } else {

            NSLog(@"%@ %@", response, responseObject);

        }

    }];

    [dataTask resume];

}


@end




0 1
原创粉丝点击