(资料图片仅供参考)
@interface MySessionDelegate : NSObject通过NSURLProtocol做统一网络请求拦截收集NSURLProtocol是自定义URL加载系统的一部分,允许开发者拦截URL请求并做自定义的逻辑处理。NSURLProtocol的主要作用是在URL请求和URL响应之间添加拦截器,提供了对URL请求的拦截和处理的能力。NSURLProtocol常用方法说明canInitWithRequest::用于判断是否需要处理该请求,如果返回YES,则会继续调用其他方法处理该请求,如果返回NO,则会终止处理该请求。canonicalRequestForRequest::用于获取规范化的请求对象,可以在这里修改请求头等信息。startLoading::用于开始处理请求,可以在这里发起网络请求、读取本地缓存等操作。stopLoading::用于停止处理请求,通常在此方法中取消网络请求、关闭文件等操作。NSURLProtocol的使用非常灵活,可以用于实现自定义的网络拦截器、缓存策略、调试工具等。代码举例@end@implementation MySessionDelegate- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didFinishCollectingMetrics:(NSURLSessionTaskMetrics *)metrics { // 打印出请求的各项指标 for(NSURLSessionTaskTransactionMetrics *transaction in metrics.transactionMetrics) { NSHTTPURLResponse *response = (NSHTTPURLResponse *)transaction.response; NSLog(@"Request URL: %@", transaction.request.URL); NSLog(@"HTTP Status Code: %ld", (long)response.statusCode); NSLog(@"Request Start Time: %@", transaction.startDate); NSLog(@"Request End Time: %@", transaction.endDate); NSLog(@"Request Duration: %f", [transaction.duration doubleValue]); NSLog(@"Bytes Sent: %lld", transaction.countOfRequestBodyBytesSent); NSLog(@"Bytes Received: %lld", transaction.countOfResponseBodyBytesReceived); NSLog(@"Redirection Count: %lu", (unsigned long)transaction.redirectCount); NSLog(@"Request Method: %@", transaction.request.HTTPMethod); }}@end
@interface MyURLProtocol : NSURLProtocol@end@interface MyURLProtocol()@property(nonatomic, strong) NSURLConnection *connection;@property(atomic, strong) NSMutableData *receivedData;@end@implementation MyURLProtocol+ (BOOL)canInitWithRequest:(NSURLRequest *)request { if ([NSURLProtocol propertyForKey:kCustomURLProtocolKey inRequest:request]) { return NO; } #if defined(Debug) return YES;#elif defined(Release) return NO;#endif}+ (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request { return request;}- (void)startLoading { NSMutableURLRequest *mutableRequest = [[self request] mutableCopy]; [NSURLProtocol setProperty:@YES forKey:kCustomURLProtocolKey inRequest:mutableRequest]; self.connection = [NSURLConnection connectionWithRequest:mutableRequest delegate:self];}- (void)stopLoading { [self.connection cancel]; self.connection = nil;}#pragma mark - NSURLConnection Delegate#pragma mark - NSURLConnection Delegate- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{ [[self client] URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageNotAllowed];}- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{ [[self client] URLProtocol:self didLoadData:data]; if (self.receivedData == nil) { self.receivedData = [[NSMutableData alloc] init]; } [self.receivedData appendData:data];}-(void)connectionDidFinishLoading:(NSURLConnection *)connection{ NSURLRequest *logRequest = [self.request copy]; NSData *data = [self.receivedData copy]; [[self client] URLProtocolDidFinishLoading:self]; self.connection = nil;#if defined(Debug) dispatch_async(dispatch_get_main_queue(), ^{ [[LogManager sharedInstance] addNetworkLog:logRequest response:data]; });#else dispatch_async(dispatch_get_main_queue(), ^{ [[LogManager sharedInstance] addNetworkLog:logRequest response:data]; });#endif }- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{ [[self client] URLProtocol:self didFailWithError:error]; self.connection = nil;}@end
下一篇:最后一页
在平时开发中有时候需要收集网络不同阶段性能数据来分析网络情况,下面总结了2种收集方式。1 通过NSURLSess
(相关资料图)1、小鸡飞蛋是长春麻将在基础上增添了特殊牌型“小鸡飞蛋”的一种玩法。2、一、开局配置麻...
CFi CN讯:?大股东持股的基本情况:截止本公告日,无锡新宏泰电器科技股份有限公司(以下简称“公司”...
中国教育报讯(记者 熊杰 通讯员 柯旸)“六一”儿童节前夕,厦门市同安区阳翟小学的学生走上街头,...
证券时报e公司讯,贝达药业(300558)5月30日晚间公告,为深化公司在非小细胞肺癌领域的布局,加强和国际创新
今天小编宋丹来为大家解答以上的问题。地址的图标怎么打出来,地址电话图标相信很多小伙伴还不知道,现在让
央视网消息:中国石油发布消息,今天(5月30日),我国首口万米科学探索井——深地塔科1井在新疆塔里木...
(记者 孙虹)“世遗古邑茶韵安溪”第二届中国·安溪国际摄影大赛战队授旗仪式暨安溪县第一批文创产品...
今天小编宋丹来为大家解答以上的问题。电脑终端是什么意思,终端是什么意思相信很多小伙伴还不知道,现在让
想必现在有很多小伙伴对于亲切关怀近义词方面的知识都比较想要了解,那么今天小好小编就为大家收集了一些关
来为大家解答以上问题,电子公章制作软件下载,电子公章制作软件很多人还不知道,现在让我们一起来看看吧!
“这下不用愁了,村里来专家了,科技特派员教我们嫁接果树了!”2023年4月26日这一天,临县林家坪镇杏洼...
智通财经APP获悉,受供需关系影响,群智咨询(Sigmaintell)认为,晶圆代工价格在2023年第三季度将持续下跌,
搭载高通骁龙8Gen3的终端将在今年年底陆续登场,小米14将会是首批骁龙8Gen3机型之一。并且大几率首发该芯片
今天小编宋丹来为大家解答以上的问题。社会姐头像,社会姐相信很多小伙伴还不知道,现在让我们一起来看看吧
对于银触点怎么取下来这个问题感兴趣的朋友应该很多,这个也是目前大家比较关注的问题,那么下面小好小编就
民主与法制网讯(通讯员魏文旭)为响应三秦锐士2023系列执行活动,近日,陕西省宝鸡市陇县人民法院司法警察
编者按:经历三年疫情影响,在2023年全球旅游业重塑之年,发展山地旅游正在成为疫后文旅行业满足民众户外旅
当别人说“真行吗”,当别人说“不要想”,当别人说“太危险”,当别人说“差不多”时,他们会如何做?...
来为大家解答以下的问题,的6次方是多少怎么算,2的6次方这个很多人还不知道,现在让我们一起来看看吧!1、2
微玉屏投稿邮箱:weiyuping1984@qq com今年3月至8月,贵州省启动2023年十大最美农村路推选活动,将从全省数
网约车司机正在进行应急救护培训。受访者供图“为什么救助时,需要贴近昏迷者的耳朵询问情况?”“如果...
下雨天总是会变得胃口大开,于是又打卡了一家最近风头正旺的美式慢烤店——onesmilebbq。店里纯纯的美式...
据埃菲社5月21日报道,人工智能所构成的威胁还远没有达到像科幻电影中那样,在没有人类干预的情况下创造一
都有黑8+进总决!热火和同州NHL球队分别客场抢7淘汰波士顿球队直播吧5月30日讯NBA东区决赛抢七大战,热火在
X 关闭
X 关闭