iOS: AFNetworking的简单封装和图片上传

重新编辑一次, 自己封装的GET, POST请求, 和上传图片,因为公司之前用到,就写了一下 希望对大家有帮助.  

MKRequestManager.h  


//GET

+ (void)GET:(NSString *)URL
    success:(void (^)(id response))success
    failure:(void (^)(AFHTTPRequestOperation *operation,NSError *error))Error;</span>
//POST

+ (void)POST:(NSString *)URL params:(NSDictionary * )params success:(void (^)(id response))success
     failure:(void (^)(AFHTTPRequestOperation *operation,NSError *error))Error;</span>

//上传图片
+ (void)UPLOADIMAGE:(NSString *)URL
             params:(NSDictionary *)params
        uploadImage:(UIImage *)image
            success:(void (^)(id response))success
            failure:(void (^)(AFHTTPRequestOperation *operation,NSError *error))Error;</span>

MKRequestManager.m  


+ (AFHTTPRequestOperationManager *)manager
{
    static AFHTTPRequestOperationManager *manager = nil;
    
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        manager = [AFHTTPRequestOperationManager manager];
        //发送的为json
        manager.requestSerializer = [AFJSONRequestSerializer serializer];
        
        //接收为json
        manager.responseSerializer = [AFJSONResponseSerializer serializer];
        
        manager.requestSerializer.timeoutInterval = 30;
        
        [manager.requestSerializer setValue:@"application/json; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
        
        manager.operationQueue.maxConcurrentOperationCount = 1;
    });
    
    return manager;
}

</pre><pre name="code" class="objc">+ (void)GET:(NSString *)URL
    success:(void (^)(id response))success
    failure:(void (^)(AFHTTPRequestOperation *operation,NSError *error))Error
{
 
    AFHTTPRequestOperationManager *manager = [self manager];
    [manager GET:URL parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSDictionary *responseDict = (NSDictionary *)responseObject;
        success(responseDict);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        if (!operation.responseObject) {
          
            NSString *s = operation.responseString;
            NSLog(@"~~~~~~~~出错了~~~~~~~~:   %@",s);
        }
        Error( operation,error);
    }];
    
}


+ (void)POST:(NSString *)URL params:(NSDictionary * )params success:(void (^)(id response))success
     failure:(void (^)(AFHTTPRequestOperation *operation,NSError *error))Error
{
    
    AFHTTPRequestOperationManager *manager = [self manager];
    
    NSMutableDictionary *dict = [params mutableCopy];
    
    [manager POST:URL parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {
        
        NSDictionary *responseDict = (NSDictionary *)responseObject;
        success(responseDict);
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        Error( operation,error);
        NSString *s = operation.responseString;
        NSLog(@"~~~~~~~~出错了~~~~~~~~  :   %@",s);
    }];
    
}

很多人问过我图片怎么上传, 以下的方法就可以了, 最关键的地方就是 首先要把图片转成data, image可以直接被转换成data 代码里会出现~ 

我们可以看到, image通过UIImageJPEGRepresentation(image, 1)被直接转换成data

第一个参数 就填要上传的image

第二个参数是这样解释的:The quality of the resulting JPEG image, expressed as a value from 0.0 to 1.0. The value 0.0 represents the maximum compression (or lowest quality) while the value 1.0 represents the least compression (or best quality).

大概意思是说 这个参数是图片的质量,可以给图片压缩, 0是最差 1是不压缩 我们公司要求原图上传 就写了1 

 

<span style="font-size:18px;">+ (void)UPLOADIMAGE:(NSString *)URL   
             params:(NSDictionary *)params 
        uploadImage:(UIImage *)image
            success:(void (^)(id response))success
            failure:(void (^)(AFHTTPRequestOperation *operation,NSError *error))Error{

     AFHTTPRequestOperationManager *manager = [self manager];
     NSMutableDictionary *dict = [params mutableCopy];                             
     [manager POST:URL parameters:dict constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 
     NSData *imageData = UIImageJPEGRepresentation(image, 1);     
     [formData appendPartWithFileData:imageData name:@"bookingFile[file_data]" fileName:@"head.jpg" mimeType:@"image/jpeg"];
    } success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSDictionary *responseDict = (NSDictionary *)responseObject;
        success(responseDict);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        Error( operation,error);
       
    }];
}</span>





                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
缓存策略 typedef NS_ENUM(NSUInteger, YBCacheType){ YBCacheTypeReturnCacheDataThenLoad = 0,///< 有缓存就先返回缓存,同步请求数据 YBCacheTypeReloadIgnoringLocalCacheData, ///< 忽略缓存,重新请求 YBCacheTypeReturnCacheDataElseLoad,///< 有缓存就用缓存,没有缓存就重新请求(用于数据不变时) YBCacheTypeReturnCacheDataDontLoad,///< 有缓存就用缓存,没有缓存就不发请求,当做请求出错处理(用于离线模式) YBCacheTypeReturnCacheDataExpireThenLoad///< 有缓存就用缓存,如果过期了就重新请求 没过期就不请求 }; //get请求 - (void)test_get { NSString *url = @"http://www.baidu.com"; NSDictionary *params = @{@"i":@"1"}; [YBHttpTool get:url params:params success:^(NSDictionary *obj) { //成功 } failure:^(NSError *error) { //失败 }]; } //get带缓存的请求 - (void)test_get_cache { NSString *url = @"http://www.baidu.com"; NSDictionary *params = @{@"i":@"1"}; [YBHttpTool get:url params:params cacheType:YBCacheTypeReturnCacheDataThenLoad success:^(NSDictionary *obj) { //成功 } failure:^(NSError *error) { //失败 }]; } //post请求带缓存 - (void)test_post_cache { NSString *url = @"http://www.baidu.com"; NSDictionary *params = @{@"i":@"1"}; [YBHttpTool post:url params:params cacheType:YBCacheTypeReturnCacheDataThenLoad success:^(NSDictionary *obj) { //成功 } failure:^(NSError *error) { //失败 }]; } //上传单张图片 - (void)test_upload_image { UIImage *image = [UIImage imageNamed:@"1"]; NSData *data = UIImageJPEGRepresentation(image, 0.5); [YBHttpTool uploadImageWithImage:data success:^(NSDictionary *obj) { //上传成功 } failure:^(NSError *error) { //上传失败 }]; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值