NetworkingTool

本文介绍了一个名为NetworkingTool的网络请求工具,该工具通过Objective-C实现,提供了多种网络请求方式,包括GET和POST方法,并支持回调处理。文章详细展示了如何使用此工具进行网络数据的获取与解析。

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

NetworkingTool.h

// 将block重命名
typedef void(^Block)(id result);

// 枚举用来标记数据类型
typedef NS_ENUM(NSInteger, MethodType) {
    GETType,
    POSTType,
};

// 协议方法,用来传值
@protocol NetworkingToolDelegate <NSObject>

// 由于无法判断数据最外层是什么类型,所以用id类型
- (void)bringResult:(id)result;

@end

@interface NetworkingTool : NSObject

// 根据方法调用时传过来的网址,获取并解析数据
+ (void)networkingWithStrURL:(NSString *)strURL deledate:(id<NetworkingToolDelegate>)delegate;

// 参数1:网址
// 参数2:数据类型(GET/POST)
// 参数3:如果是POST,填写body;如果不是,为空
+ (void)networkingWithStrURL:(NSString *)strURL type:(MethodType)type bodyStr:(NSString *)bodyStr block:(Block)block;
@end

NetworkingTool.m

// 都是加号方法(类方法,类直接调用)
+ (void)networkingWithStrURL:(NSString *)strURL deledate:(id<NetworkingToolDelegate>)delegate{
    NSURL *url = [NSURL URLWithString:strURL];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    NSURLSession *session = [NSURLSession sharedSession];
    NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        dispatch_queue_t mainQueue = dispatch_get_main_queue();
        dispatch_async(mainQueue, ^{
            id result = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
            // 代理人执行协议方法
            [delegate bringResult:result];
        });
    }];
    [task resume];
}



+ (void)networkingWithStrURL:(NSString *)strURL type:(MethodType)type bodyStr:(NSString *)bodyStr block:(Block)block {
    NSURL *url = [NSURL URLWithString:strURL];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    if (type == POSTType) {
        [request setHTTPMethod:@"POST"];
        NSData *data = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];
        [request setHTTPBody:data];
    }
    NSURLSession *session = [NSURLSession sharedSession];
    NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        id result = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
        // 将result传出去
        block(result);
    }];
    [task resume];
}

NetworkingTool使用: 引完头文件后, 直接NetworkingTool类调用方法即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值