转载自:http://www.cocoachina.com/ios/20111118/3538.html
公司网络很多都是有代理设置的,如果设备通过wifi上网,就要过公司网络代码。
于是想到一个问题:如何读取iOS设备的代理设置?
用过ASIHTTPRequest这个开源网络库,它可以读取代理设置,于是我在源码中发现读取代理设置的方法,我已把代码提取出来:
NSDictionary *proxySettings = NSMakeCollectable([(NSDictionary *)CFNetworkCopySystemProxySettings() autorelease]);
NSArray *proxies = NSMakeCollectable([(NSArray *)CFNetworkCopyProxiesForURL((CFURLRef)[NSURL URLWithString:@"http://www.google.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]);
需要CFNetwork.framework
注意:实际使用该段代码时,经系统错误提示,需要使用到__bridge。
NSDictionary *proxySettings = NSMakeCollectable((__bridge CFTypeRef)([(__bridge NSDictionary *)CFNetworkCopySystemProxySettings() autorelease]));
NSArray *proxies = NSMakeCollectable((__bridge CFTypeRef)([(NSArray *)CFNetworkCopyProxiesForURL((CFURLRef)[NSURL URLWithString:@"http://www.baidu.com"], (__bridge CFDictionaryRef)proxySettings) autorelease]));
Compiler Flag改为-fno-objc-arc即可。