AFNetworking网络请求-数据请求(POST/GET)

来源:互联网 发布:淘宝店怎么提升信誉 编辑:程序博客网 时间:2024/05/29 17:43

使用AFNetworking(https://github.com/AFNetworking/AFNetworking)进行post,或get的网络请求服务端数据。

1、添加AFNetworking框架

通过终端使用pod进行管理




2、添加对应framework

SystemConfiguration.frameworkMobileCoreServices.frameworkSecurity.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];



0 0
原创粉丝点击