如何在NSURLSession
中以编程方式在iOS中配置代理设置?我遵循了link。
但似乎kCFStreamPropertyHTTPProxyHost
,kCFStreamPropertyHTTPProxyPort
已弃用iOS 9
。那么以编程方式创建代理的方式是什么?
答案 0 :(得分:0)
Apple开发者论坛中有2个主题与此事相关。
oldest one指示我们应该使用tr
,rowIndex
和kCFNetworkProxiesHTTPEnable
键,而不是已弃用的kCFNetworkProxiesHTTPProxy
和kCFNetworkProxiesHTTPPort
。但这只能解决有关HTTP代理设置的警告。
参考HTTPS代理密钥,有以下语句:
请提交包含详细信息的错误,然后继续使用不推荐使用的内容 密钥。
在线程底部,这是
AFAIK,您不需要匹配的“ HTTPS”常量- OS X 唯一-因为iOS可以相互推论。
但是显然这是行不通的。
在the more recent thread中,有一个响应,它使用这些常量字符串kCFStreamPropertyHTTPProxyHost
,kCFStreamPropertyHTTPProxyPort
和"HTTPSEnable"
代替HTTP键。
因此,错误可能是HTTPS代理密钥不适用于iOS平台,或者新密钥无法按预期对HTTPS代理起作用。
据我所知,可以肯定地避免使用HTTP代理的警告,例如:
"HTTPSProxy"
"HTTPSPort"
如果使用HTTPS代理,则可能必须坚持不推荐使用的密钥:
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)
或使用它们各自的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
后两种配置都可以使用。