iOS App 通过代理服务器访问网络

2018-07-15  本文已影响0人  舌尖上的大胖

总体思路

对于新版的 iOS 和 macOS,CocoaTouch 层级负责通讯的类是 NSURLSession,如果需要通过代理访问网络,是需要指定其 configuration 属性,configuration 的类型是 NSURLSessionConfiguration
  将 NSURLSessionConfigurationconnectionProxyDictionary 属性指定为相应的 Dictionary。

网上找到的代码

/**
 * 代理设置
 */
- (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;
}

代码编译时会发现,kCFStreamPropertyHTTPProxyHost 等常量已经被标为 Deprecated,会有警告。

满足代码洁癖

根据帮助文件的描述,在 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 中的有些常量,只标识为 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
};

参考资料

(完)

上一篇 下一篇

猜你喜欢

热点阅读