Ios开发对第三方框架AFNetWorking网络访问的封装使用
来源:互联网 发布:知世喜欢小樱 编辑:程序博客网 时间:2024/04/29 17:57
通常当用到第三方框架的时候,我们都会将其封装成一个工具类来使用,以便在将来更换框架的时候方便修改,以下为封装后的AFNetWorking的使用工具类HttpManager,记录一下,以方便今后使用,对于具体的需求应该相应的进行变化,例如在下载图片时会有所不同。
HttpManager.h文件内容为:
#import <Foundation/Foundation.h>
typedef void (^HttpSuccessBlock) (id JSON);
typedef void (^HttpFailureBlock) (NSError *error);
@interface HttpManager : NSObject
+ (void)getWithPath:(NSString *)baseUrl path:(NSString *)path params:(NSDictionary *)params success:(HttpSuccessBlock)success failure:(HttpFailureBlock)failure;
+ (void)postWithPath:(NSString *)baseUrl path:(NSString *)path params:(NSDictionary *)params success:(HttpSuccessBlock)success failure:(HttpFailureBlock)failure;
@end
HttpManager.m文件的内容为:
#import "HttpManager.h"
#import "AFNetworking.h"
#import "config.h"
@implementation HttpManager
#pragma mark - baseUrl 为访问的基路径如:https://api.weibo.com,path是跟在基路径之后的部分路径,如:oauth2/access_token(因为AFNetworking的访问方式才这样划分),params是参数,success 是访问成功时调用的block,failure是访问失败时调用的bolcok,method为确定发送的是post还是get请求
+ (void)requestWithPath:(NSString *)baseUrl path:(NSString *)path params:(NSDictionary *)params success:(HttpSuccessBlock)success failure:(HttpFailureBlock)failure method:(NSString *)method
{
// 1.创建post请求
AFHTTPClient *client = [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:baseUrl ]];
NSMutableDictionary *allParams = [NSMutableDictionary dictionary];
// 拼接传进来的参数
if (params) {
[allParams setDictionary:params];
}
// 拼接token参数,这一部分可以根据实际需要来删除,因为本代码段取至新浪微博的开发代码,所以就保留了
NSString *token = [AccountTool sharedAccountTool].account.accessToken;
if (token) {
[allParams setObject:token forKey:@"access_token"];
}
NSURLRequest *post = [client requestWithMethod:method path:path parameters:allParams];
// 2.创建AFJSONRequestOperation对象
NSOperation *op = [AFJSONRequestOperation JSONRequestOperationWithRequest:post
success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
if (success == nil) return;
success(JSON);
}
failure : ^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
if (failure == nil) return;
failure(error);
}];
// 3.发送请求
[op start];
}
//发送post请求
+ (void)postWithPath:(NSString *)baseUrl path:(NSString *)path params:(NSDictionary *)params success:(HttpSuccessBlock)success failure:(HttpFailureBlock)failure
{
[self requestWithPath:baseUrl path:path params:params success:success failure:failure method:@"POST"];
}
//发送get请求
+ (void)getWithPath:(NSString *)baseUrl path:(NSString *)path params:(NSDictionary *)params success:(HttpSuccessBlock)success failure:(HttpFailureBlock)failure
{
[self requestWithPath:baseUrl path:path params:params success:success failure:failure method:@"GET"];
}
@end
在controller中对该封装类的调用如下,应该根据具体需求来变化其中的代码:
#pragma mark 换取accessToken- (void)getAccessToken:(NSString *)requestToken
{
[HttpManager postWithPath:@"https://api.weibo.com" path:@"oauth2/access_token" params:@{
@"client_id" : kAppKey,
@"client_secret" : kAppSecret,
@"grant_type" : @"authorization_code",
@"redirect_uri" : kRedirectURI,
@"code" : requestToken
} success:^(id JSON) {
// 保存账号信息
Account *account = [[Account alloc] init];
account.accessToken = JSON[@"access_token"];
account.uid = JSON[@"uid"];
[[AccountTool sharedAccountTool] saveAccount:account];
// 回到主页面
self.view.window.rootViewController = [[MainController alloc] init];
// 清除指示器
[MBProgressHUD hideAllHUDsForView:self.view animated:YES];
} failure:^(NSError *error) {
// 清除指示器
[MBProgressHUD hideAllHUDsForView:self.view animated:YES];
}];
}
好了,大概就是这么多,仅供参考,文中会用到一些其他的类,就不放上去了。
- Ios开发对第三方框架AFNetWorking网络访问的封装使用
- IOS网络开发:AFNetworking第三方框架的使用
- 对第三方框架AFNetworking网络请求的使用浅析
- Reachability 和AFNetWorking 第三方框架对网络的监测
- iOS第三方网络请求框架--AFNetworking
- iOS 第三方框架- AFNetworking的基本使用
- iOS开发 - AFNetworking 的使用(第三方库)
- iOS开发中对于第三方AFNetworking的使用
- iOS----网络开发之第三方库AFNetworking
- [iOS]网络之使用第三方库AFNetworking
- iOS第三方框架---AFNetWorking详解
- 归纳笔记012:第三方网络请求AFNetworking的使用
- iOS开发:GET与POST接口网络请求以及对AFNetworking的二次封装
- iOS开发第三方框架之AFNetworking3.0的使用
- AFNetworking第三方框架
- iOS开发 常用的第三方框架
- iOS开发之网络请求(基于AFNetworking的再封装)
- iOS开发之网络请求(基于AFNetworking的再封装)
- 【私人订制】之微信文字游戏制作(带可执行的实例)
- 使用windows filter platform(wfp)开发TCP重定向的方法
- iOS沙盒(sandbox)机制及获取沙盒路径
- Nginx性能优化CPU参数worker_cpu_affinity使用说明
- Android framework系统默认设置修改
- Ios开发对第三方框架AFNetWorking网络访问的封装使用
- 使用hadoop ecipse插件需要注意的问题
- 挂载和显示u盘信息
- 使用knockout.js 完成template binding
- 关于编译openssl-android库
- jquery项目中常用的方法和jquery插件
- 陕西一命案嫌犯撞脸郭达 杰森斯坦森躺枪 陕西一命案嫌犯撞脸郭达 杰森斯坦森躺枪
- SQLCODE=-803,SQLSTATE=23505,SQLERROR=1
- centos ssh连接慢的解决办法