
總體思路
對(duì)于新版的 iOS 和 macOS,CocoaTouch 層級(jí)負(fù)責(zé)通訊的類是 NSURLSession,如果需要通過代理訪問網(wǎng)絡(luò),是需要指定其 configuration 屬性,configuration 的類型是 NSURLSessionConfiguration。
將 NSURLSessionConfiguration 的 connectionProxyDictionary 屬性指定為相應(yīng)的 Dictionary。
網(wǎng)上找到的代碼
/**
* 代理設(shè)置
*/
- (NSURLSessionConfiguration *)setProxyWithConfig
{
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
config.requestCachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
config.connectionProxyDictionary = @
{
@"HTTPEnable":@YES,
(id)kCFStreamPropertyHTTPProxyHost:@"127.0.0.1",
(id)kCFStreamPropertyHTTPProxyPort:@80,
@"HTTPSEnable":@YES,
(id)kCFStreamPropertyHTTPSProxyHost:@"127.0.0.1",
(id)kCFStreamPropertyHTTPSProxyPort:@80
};
return config;
}
代碼編譯時(shí)會(huì)發(fā)現(xiàn),kCFStreamPropertyHTTPProxyHost 等常量已經(jīng)被標(biāo)為 Deprecated,會(huì)有警告。
滿足代碼潔癖
根據(jù)幫助文件的描述,在 CFNetwork 的 Global Proxy Settings Constants 部分,查詢到一些常量,用于取代 Deprecated 的常量。
| 值 | CFNetwork/CFProxySupport.h | CFNetwork/CFHTTPStream.h CFNetwork/CFSocketStream.h |
|---|---|---|
@"HTTPEnable" |
kCFNetworkProxiesHTTPEnable |
N/A |
@"HTTPProxy" |
kCFNetworkProxiesHTTPProxy |
kCFStreamPropertyHTTPProxyHost |
@"HTTPPort" |
kCFNetworkProxiesHTTPPort |
kCFStreamPropertyHTTPProxyPort |
@"HTTPSEnable" |
kCFNetworkProxiesHTTPSEnable |
N/A |
@"HTTPSProxy" |
kCFNetworkProxiesHTTPSProxy |
kCFStreamPropertyHTTPSProxyHost |
@"HTTPSPort" |
kCFNetworkProxiesHTTPSPort |
kCFStreamPropertyHTTPSProxyPort |
@"SOCKSEnable" |
kCFNetworkProxiesSOCKSEnable |
N/A |
@"SOCKSProxy" |
kCFNetworkProxiesSOCKSProxy |
kCFStreamPropertySOCKSProxyHost |
@"SOCKSPort" |
kCFNetworkProxiesSOCKSPort |
kCFStreamPropertySOCKSProxyPort |
但是,由于 CFNetwork/CFProxySupport.h 中的有些常量,只標(biāo)識(shí)為 macOS 可用,iOS 上是訪問不到的,所以可以直接寫為字符串常量。
config.connectionProxyDictionary = @
{
@"HTTPEnable": @YES,
@"HTTPProxy": @"127.0.0.1",
@"HTTPPort": @80,
@"HTTPSEnable": @YES,
@"HTTPSProxy": @"127.0.0.1",
@"HTTPSPort": @80,
@"SOCKSEnable": @YES,
@"SOCKSProxy": @"127.0.0.1",
@"SOCKSPort": @80
};
參考資料
(完)