网络请求
2015-10-08 16:37
411 查看
#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; }
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; }
相关文章推荐
- 访问Nginx发生SSL connection error的一种情况
- fastjson处理接口时的一个问题
- 星外虚拟主机访问被控出现Unspecified error解决方法
- IIS 错误 Server Application Error 详细解决方法
- On Error Resume Next 语句
- 解决ie动态修改link样式,import css不刷新的问题
- IIS运行错误 Server Application Error 错误代码 Error: 8004的解决方法
- Lua编程示例(一):select、debug、可变参数、table操作、error
- 收集整理的http/1.1 500 server error错误的解决方法
- SQL 2005 ERROR:3145 解决办法(备份集中的数据库备份与现有的数据库不同)
- VBScript中On Error语句用法小结
- css import与link的区别
- C#中实现Fluent Interface的三种方法
- Flex include和import ActionScript代码
- c#中的interface abstract与virtual介绍
- JQuery ajax中error返回错误及一直返回error的解答
- PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
- node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
- 领悟php接口中interface存在的意义
- PHP 5.3和PHP 5.4出现FastCGI Error解决方法