iOS 判断是否设置代理

来源:互联网 发布:juniper network mac 编辑:程序博客网 时间:2024/06/05 09:14

只要是网络设置了代理,那么就禁止一切网络访问,这里记录一下如何判断是否设置了代理。
需要导入框架CFNetwork
然后,这个方法是mrc的:需要添加-fno-objc-arc的flag
代码如下:

#import "CETCProxyStatus.h"@implementation CETCProxyStatus+ (BOOL)getProxyStatus {    NSDictionary *proxySettings = NSMakeCollectable([(NSDictionary *)CFNetworkCopySystemProxySettings() autorelease]);    NSArray *proxies = NSMakeCollectable([(NSArray *)CFNetworkCopyProxiesForURL((CFURLRef)[NSURL URLWithString:@"http://www.baidu.com"], (CFDictionaryRef)proxySettings) autorelease]);    NSDictionary *settings = [proxies objectAtIndex:0];    NSLog(@"host=%@", [settings objectForKey:(NSString *)kCFProxyHostNameKey]);    NSLog(@"port=%@", [settings objectForKey:(NSString *)kCFProxyPortNumberKey]);    NSLog(@"type=%@", [settings objectForKey:(NSString *)kCFProxyTypeKey]);    if ([[settings objectForKey:(NSString *)kCFProxyTypeKey] isEqualToString:@"kCFProxyTypeNone"]) {        //没有设置代理        return NO;    } else {        //设置代理了        return YES;    }}@end

考虑到检测代理的消耗,测试了一下代码的时间,大概0.7ms

//计算一段代码执行时间CFAbsoluteTime startTime =CFAbsoluteTimeGetCurrent(); //在这写入要计算时间的代码 ... CFAbsoluteTime linkTime = (CFAbsoluteTimeGetCurrent() - startTime); //打印出来为代码执行时间 单位msNSLog(@"Linked in %f ms", linkTime *1000.0); 
原创粉丝点击