網絡請求

#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;

    

}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章