AFNetworking网络请求-数据请求(POST/GET)
2016-07-22 09:46
453 查看
使用AFNetworking(https://github.com/AFNetworking/AFNetworking)进行post,或get的网络请求服务端数据。
1、添加AFNetworking框架
通过终端使用pod进行管理
2、添加对应framework
3、使用
3-1、导入头文件
#import "AFNetworking.h"
3-2、封装调用方法/// 请求样式(post,或get)
typedef NS_ENUM(NSInteger, RequestHttpType)
{
/// 请求样式-post
RequestHttpTypePOST = 1,
/// 请求样式-get
RequestHttpTypeGET = 2,
};
3-3、使用示例
NSString *url = @"http://op.juhe.cn/onebox/weather/query”;
[AFNetwork requestWithUrl:url paramtes:nil type:RequestHttpTypeGET complete:^(id responseObject) {
NSLog(“responseObject(class = %@) = %@”, [responseObject class], responseObject);
}];
4、使用注意事项
4-1、AFNetworking集成了 reachability 网络监测功能
// 是否有网
BOOL isReachable = [AFNetworkReachabilityManager sharedManager].isReachable;
// 是否WIFI网络
BOOL isReachableViaWiFi = [AFNetworkReachabilityManager sharedManager].isReachableViaWiFi;
// 是否WWAN网络
BOOL isReachableViaWWAN = [AFNetworkReachabilityManager sharedManager].isReachableViaWWAN;
4-2、网络请求的开始,与取消
// 创建网络请求
NSString *requestUrl = [NSString stringWithFormat:@"%@%@", kServerHost, ((url && 0 != url.length) ? url : @"")];
NSDictionary *requestParameters = dict;
NSString *requestType = (RequestHttpTypePOST == type ? @"POST" : @"GET");
NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] requestWithMethod:requestType URLString:requestUrl parameters:requestParameters error:nil];
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
}];
// 开始网络请求
[dataTask resume];
// 取消网络请求
[dataTask cancel];
1、添加AFNetworking框架
通过终端使用pod进行管理
2、添加对应framework
SystemConfiguration.framework MobileCoreServices.framework Security.framework
3、使用
3-1、导入头文件
#import "AFNetworking.h"
3-2、封装调用方法/// 请求样式(post,或get)
typedef NS_ENUM(NSInteger, RequestHttpType)
{
/// 请求样式-post
RequestHttpTypePOST = 1,
/// 请求样式-get
RequestHttpTypeGET = 2,
};
/** * 网络请求(区分POST、GET) * * @param url API接口url * @param dict API请求参数 * @param type API请求类型(POST、或GET) * @param complete 请求结果回调 * * @return NSURLSessionDataTask(便于后续操作处理,如取消请求) */ + (NSURLSessionDataTask *)requestWithUrl:(NSString *)url paramtes:(NSDictionary *)dict type:(RequestHttpType)type complete:(void (^)(id responseObject))complete { // 网络异常判断 开始修改时,判断网络情况 BOOL isBadNet = [AFNetworkReachabilityManager sharedManager].isReachable; NSLog(@"当前网络状态:%@", (isBadNet ? @"不可用" : @"可用")); if (isBadNet) { NSLog("网络断了哦,请检查网络再试"); if (complete) { complete(nil); } return nil; } // 状态栏显示网络加载样式 [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; // 请求地址 NSString *serverHost = @“192.168.12.22”; NSString *requestUrl = [NSString stringWithFormat:@"%@%@", serverHost, ((url && 0 != url.length) ? url : @"")]; // 请求参数 NSDictionary *requestParameters = dict; // 请求类型POST/GET NSString *requestType = (RequestHttpTypePOST == type ? @"POST" : @"GET"); NSLog(@"\n request\n url=%@\n para=%@\n type=%@", requestUrl, requestParameters, requestType); // 可变请求 NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] requestWithMethod:requestType URLString:requestUrl parameters:requestParameters error:nil]; NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration]; NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) { NSLog(@"\n result\n class=%@\n responseObject=%@", [responseObject class], responseObject); // 状态栏隐藏网络加载样式 [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; if (complete) { complete(responseObject); } }]; // 开始请求 [dataTask resume]; // [dataTask cancel]; return dataTask; }
3-3、使用示例
NSString *url = @"http://op.juhe.cn/onebox/weather/query”;
[AFNetwork requestWithUrl:url paramtes:nil type:RequestHttpTypeGET complete:^(id responseObject) {
NSLog(“responseObject(class = %@) = %@”, [responseObject class], responseObject);
}];
4、使用注意事项
4-1、AFNetworking集成了 reachability 网络监测功能
// 是否有网
BOOL isReachable = [AFNetworkReachabilityManager sharedManager].isReachable;
// 是否WIFI网络
BOOL isReachableViaWiFi = [AFNetworkReachabilityManager sharedManager].isReachableViaWiFi;
// 是否WWAN网络
BOOL isReachableViaWWAN = [AFNetworkReachabilityManager sharedManager].isReachableViaWWAN;
4-2、网络请求的开始,与取消
// 创建网络请求
NSString *requestUrl = [NSString stringWithFormat:@"%@%@", kServerHost, ((url && 0 != url.length) ? url : @"")];
NSDictionary *requestParameters = dict;
NSString *requestType = (RequestHttpTypePOST == type ? @"POST" : @"GET");
NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] requestWithMethod:requestType URLString:requestUrl parameters:requestParameters error:nil];
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
}];
// 开始网络请求
[dataTask resume];
// 取消网络请求
[dataTask cancel];
相关文章推荐
- python网络爬虫抓取图片
- HTTP 验证 Tomcat中进行基本验证 (Basic Authentication) 和摘要验证 (Digest Authentication)
- 模拟http 的请求工具汇总
- 【CDP-云设计模式】第5章,1.网络存储模式(Web Storage Pattern)
- [置顶] MSDN, 我告诉你[http://msdn.itellyou.cn/]
- Android OkHttp
- 点击穿透问题(http://www.tuicool.com/articles/6NfaUnM)
- 计算机网络知识整理
- Android中判断网络连接是否可用及监控网络状态
- Linux网络编程入门 (转载)
- CentOS中通过NAT连接网络
- 第十讲:网络虚拟化(二)
- QTcpSocket 对连接服务器中断的不同情况进行判定
- IMS网络基本概念
- 远程代理漏洞:httpoxy
- Java 9 - 比 Java 8 更接地气:定制最小化的rt.jar, REPL脚本化执行,原生json处理,支持HTTP 2.0,新的锁机制
- 编译安装httpd2.2.4
- OSI七层与TCP/IP五层网络架构详解
- HttpClient4.5.2 使用cookie保持会话——连接池的实现结束篇(4)
- H3C设备网络组建和设置