基于AFNetWoring 封装的网络请求类
来源:互联网 发布:淘宝一箩筐 编辑:程序博客网 时间:2024/05/10 17:06
#import <Foundation/Foundation.h>
#import "AFNetworking.h"
typedefvoid(^FinishDidBlock)(AFHTTPRequestOperation *operation,id result);
typedefvoid(^FailureBlock)(AFHTTPRequestOperation *operation,NSError *error);;
@interface DataService :NSObject
+ (AFHTTPRequestOperation *)requestWithURL:(NSString *)url
params:(NSMutableDictionary *)params
httpMethod:(NSString *)httpMethod
finishDidBlock:(FinishDidBlock)finishDidBlock
failureBlock:(FailureBlock)failureBlock;
@end
#import "DataService.h"
#define BASE_URL @"https://open.weibo.cn/2/"
@implementation DataService
+ (AFHTTPRequestOperation *)requestWithURL:(NSString *)url
params:(NSMutableDictionary *)params
httpMethod:(NSString *)httpMethod
finishDidBlock:(FinishDidBlock)finishDidBlock
failureBlock:(FailureBlock)failureBlock
{
if (params == nil) {
params = [NSMutableDictionarydictionary];
}
//拼接URL
NSMutableString *urlStr = [NSMutableStringstringWithFormat:@"%@%@",BASE_URL, url];
//参数处理
NSUserDefaults *defaults = [NSUserDefaultsstandardUserDefaults];
NSDictionary *sinaweiboInfo = [defaults objectForKey:@"SinaWeiboAuthData"];
NSString *accessTokenKey = [sinaweiboInfo objectForKey:@"AccessTokenKey"];
if (accessTokenKey.length ==0) {
return nil;
}
[paramssetObject:accessTokenKey forKey:@"access_token"];
//创建请求管理对象
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManagermanager];
manager.requestSerializer = [AFHTTPRequestSerializerserializer];
AFHTTPRequestOperation *operation =nil;
if ([httpMethod isEqualToString:@"GET"]) {
operation = [managerGET:urlStr
parameters:params
success:^(AFHTTPRequestOperation *operation,id responseObject) {
//请求成功
NSLog(@"AF-GET请求成功");
if (finishDidBlock) {
finishDidBlock(operation, responseObject);
}
}failure:^(AFHTTPRequestOperation *operation,NSError *error) {
//请求失败
NSLog(@"请求失败");
if (failureBlock) {
failureBlock(operation, error);
}
}];
}elseif ([httpMethod isEqualToString:@"POST"]){
//POST请求
BOOL isFile = NO;
for (NSString *keyin params) {
id value = params[key];
if ([value isKindOfClass:[NSDataclass]]) {
//有文件类型的参数
isFile =YES;
break;
}
}
if (!isFile) {
//没有文件
operation = [managerPOST:urlStr
parameters:params
success:^(AFHTTPRequestOperation *operation,id responseObject) {
//请求成功
NSLog(@"AF-POST(非文件)请求成功");
if (finishDidBlock) {
finishDidBlock(operation, responseObject);
}
}failure:^(AFHTTPRequestOperation *operation,NSError *error) {
//请求失败
NSLog(@"AF-POST(非文件)请求失败");
if (failureBlock) {
failureBlock(operation, error);
}
}];
}else{
//有文件
operation = [managerPOST:urlStr
parameters:params
constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
for (NSString *keyin params) {
id value = params[key];
if ([value isKindOfClass:[NSDataclass]]) {
[formDataappendPartWithFileData:value
name:key
fileName:key
mimeType:@"image/jpeg"];
}
}
}success:^(AFHTTPRequestOperation *operation,id responseObject) {
//请求成功
NSLog(@"AF-POST(带文件)请求成功");
if (finishDidBlock) {
finishDidBlock(operation, responseObject);
}
}failure:^(AFHTTPRequestOperation *operation,NSError *error) {
//请求失败
NSLog(@"AF-POST(带文件)请求失败");
if (failureBlock) {
failureBlock(operation, error);
}
}];
}
}
//设置返回数据的解析方式
operation.responseSerializer = [AFJSONResponseSerializerserializerWithReadingOptions:NSJSONReadingMutableContainers];
return operation;
}
@end
- 基于AFNetWoring 封装的网络请求类
- AFNetworing同步网络请求?
- 使用AFNetworing进行网络请求
- 基于AFNetworking封装的网络请求工具类
- 基于AFNetworking封装的网络请求工具类【转载】
- 基于网络请求框架的封装
- ios 对请求工具AFNetWoring封装自己的一些用法分享(觉得有用的可以看看)
- 网络请求的封装
- 封装的网络请求
- 网络请求的封装
- 网络请求的封装
- iOS开发之网络请求(基于AFNetworking的再封装)
- iOS开发之网络请求(基于AFNetworking的再封装)
- LXNetwork - 基于AF3.0封装的iOS网络请求库
- 基于OkHttpUtils网络请求的二次封装(简单版)
- Android基于http封装的网络请求框架
- iOS 基于AF网络请求封装的简易思路
- 自定义UI 网络 请求类的封装
- jQuery EasyUI使用教程之创建展开行详细编辑表单的CRUD应用
- sql查询语句的结果字段中有空值
- java中的基本数据类型存放位置
- Javascript学习(一)——汉诺塔迭代算法的实现过程
- C函数指针妙用,用c语言写一个简易类
- 基于AFNetWoring 封装的网络请求类
- [ASP.NET]分析MVC5源码,并实现一个ASP.MVC
- iOS 代码实践总结
- 设计模式学习笔记(二)代理模式
- Activity的启动过程
- Java中产生随机数的方法
- ES7之Decorators实现AOP示例
- 应用系统Url交互之数据加密
- 【4】Windows客户端C/C++编程规范“建议”——表达式和运算