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

本文介绍了如何使用AFNetworking库进行POST和GET网络请求,包括添加框架、导入头文件、封装调用方法及使用示例。同时提到了AFNetworking内置的网络状态监测功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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];



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

番薯大佬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值