Apple 开发者论坛上有 2 个帖子讨论此问题。
oldest one,表示我们应该使用kCFNetworkProxiesHTTPEnable、kCFNetworkProxiesHTTPProxy 和kCFNetworkProxiesHTTPPort 键而不是已弃用的kCFStreamPropertyHTTPProxyHost 和kCFStreamPropertyHTTPProxyPort。但这仅修复了有关 HTTP 代理设置的警告。
参考HTTPS代理密钥,有如下说法:
请提交带有详细信息的错误并继续使用已弃用的
现在的钥匙。
在线程的底部,这是:
AFAIK 你不需要匹配的“HTTPS”常量——OS X
仅——因为 iOS 会从另一个推断出一个。
但显然这不起作用。
在the more recent thread 中,有一个响应使用常量字符串"HTTPSEnable"、"HTTPSProxy" 和"HTTPSPort" 来代替这些键,用于HTTPS 情况。
因此,错误是 HTTPS 代理密钥不适用于 iOS 平台,或者新密钥无法按预期对 HTTPS 代理工作。
据我所知,如果您使用 HTTP 代理,肯定可以避免警告,如下所示:
NSURLSessionConfiguration *configuration = NSURLSessionConfiguration.defaultSessionConfiguration;
NSDictionary * connectionProxyDictionary = @{
(NSString *)kCFNetworkProxiesHTTPEnable: [NSNumber numberWithInt: 1],
(NSString *)kCFNetworkProxiesHTTPProxy: @"127.0.0.1",
(NSString *)kCFNetworkProxiesHTTPPort: [NSNumber numberWithInt: 8888]
};
[configuration setConnectionProxyDictionary:connectionProxyDictionary];
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];
let configuration = URLSessionConfiguration.default
configuration.connectionProxyDictionary = [
kCFNetworkProxiesHTTPEnable: true,
kCFNetworkProxiesHTTPProxy: "127.0.0.1",
kCFNetworkProxiesHTTPPort: 8888
]
let session = URLSession(configuration: configuration)
如果您使用 HTTPS 代理,您可能必须坚持使用已弃用的密钥:
NSURLSessionConfiguration *configuration = NSURLSessionConfiguration.defaultSessionConfiguration;
NSDictionary * connectionProxyDictionary = @{
@"HTTPSEnable": [NSNumber numberWithInt: 1],
(NSString *)kCFStreamPropertyHTTPSProxyHost: @"127.0.0.1",
(NSString *)kCFStreamPropertyHTTPSProxyPort: [NSNumber numberWithInt: 8888]
};
[configuration setConnectionProxyDictionary:connectionProxyDictionary];
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];
let configuration = URLSessionConfiguration.default
configuration.connectionProxyDictionary = [
"HTTPSEnable": true,
kCFStreamPropertyHTTPSProxyHost: "127.0.0.1",
kCFStreamPropertyHTTPSProxyPort: 8888
]
let session = URLSession(configuration: configuration)
或使用它们各自的String 常量:
NSURLSessionConfiguration *configuration = NSURLSessionConfiguration.defaultSessionConfiguration;
NSDictionary * connectionProxyDictionary = @{
@"HTTPSEnable": [NSNumber numberWithInt: 1],
@"HTTPSProxy": @"127.0.0.1",
@"HTTPSPort": [NSNumber numberWithInt: 8888]
};
[configuration setConnectionProxyDictionary:connectionProxyDictionary];
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];
let configuration = URLSessionConfiguration.default
configuration.connectionProxyDictionary = [
"HTTPSEnable": true,
"HTTPSProxy": "127.0.0.1",
"HTTPSPort": 8888
]
let session = URLSession(configuration: configuration)
最后两种配置都可以。