码迷,mamicode.com
首页 > 其他好文 > 详细

网络请求

时间:2015-10-08 18:30:08      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:interface   operation   import   result   error   

#import <Foundation/Foundation.h>

#import "AFNetworking.h"


typedef void(^DidFinishBlock)(AFHTTPRequestOperation *operation,id result);

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


@interface DataService : NSObject


//声明类方法

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

                                    params:(NSMutableDictionary *)params

                                httpMethod:(NSString *)httpMethod

                            didFinishBlock:(DidFinishBlock)didFinishBlock

                              didFailBlock:(DidFailBlock)didFailBlock;



-------------------------------------------------------------------------------------------------------------------------

//类方法实现

@implementation DataService


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

                                    params:(NSMutableDictionary *)params

                                httpMethod:(NSString *)httpMethod

                            didFinishBlock:(DidFinishBlock)didFinishBlock

                              didFailBlock:(DidFailBlock)didFailBlock{

    

    


    //创建请求管理对象

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

    manager.requestSerializer = [AFHTTPRequestSerializer serializer];

    

    AFHTTPRequestOperation *operation = nil;

    

    if ([httpMethod isEqualToString:@"GET"]) {

        operation = [manager GET:url

                      parameters:params

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

                             //请求成功

//                             NSLog(@"AF-GET(无文件)请求成功");

                             if (didFinishBlock) {

                                 didFinishBlock(operation,responseObject);

                             }

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

                             //请求失败

//                             NSLog(@"AF-POST(无文件)请求失败");

                             if (didFailBlock) {

                                 didFailBlock(operation,error);

                             }

                             

                         }];


    }else if([httpMethod isEqualToString:@"POST"]){

        BOOL isFile = NO;

        

        for (NSString *key in params) {

            id value = params[key];

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

                //有文件类型的参数

                isFile = YES;

                break;

            }

        }

        

        if (!isFile) {

            //不带文件

            operation = [manager POST:url

                           parameters:params

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

                                  

                                  //请求成功

//                                  NSLog(@"AF-POST(非文件)请求成功");

                                  if (didFinishBlock) {

                                      didFinishBlock(operation, responseObject);

                                  }

                              }

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

                                  

                                  //请求失败

//                                  NSLog(@"AF-POST(非文件)请求失败");

                                  if (didFailBlock) {

                                      didFailBlock(operation, error);

                                  }

                                  

                              }];

            



        }else{

            

            //带文件

            operation = [manager POST:url

                           parameters:params

            constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {

                for (NSString *key in params) {

                    id value = params[key];

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

                        

                        //Form表单中添加data数据

                        [formData appendPartWithFileData:value

                                                    name:key

                                                fileName:key

                                                mimeType:@"image/jpeg"];

                        

                    }

                }

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

                

                //请求成功

//                NSLog(@"AF-POST(带文件)请求成功");

                if (didFinishBlock) {

                    didFinishBlock(operation,responseObject);

                }

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

                

                //请求失败

//                NSLog(@"AF-POST(带文件)请求失败");

                if (didFailBlock) {

                    didFailBlock(operation,error);

                }

            }];

            

            

        }

    }


    

    

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

    operation.responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingMutableContainers];

    

    return operation;

    

}



网络请求

标签:interface   operation   import   result   error   

原文地址:http://10577688.blog.51cto.com/10567688/1700928

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!