以编程方式在iOS中配置代理设置

时间:2016-03-31 12:40:11

标签: ios objective-c ios9 nsurlsession

如何在NSURLSession中以编程方式在iOS中配置代理设置?我遵循了link

但似乎kCFStreamPropertyHTTPProxyHostkCFStreamPropertyHTTPProxyPort已弃用iOS 9。那么以编程方式创建代理的方式是什么?

1 个答案:

答案 0 :(得分:0)

Apple开发者论坛中有2个主题与此事相关。

oldest one指示我们应该使用trrowIndexkCFNetworkProxiesHTTPEnable键,而不是已弃用的kCFNetworkProxiesHTTPProxykCFNetworkProxiesHTTPPort。但这只能解决有关HTTP代理设置的警告。

参考HTTPS代理密钥,有以下语句:

请提交包含详细信息的错误,然后继续使用不推荐使用的内容 密钥。

在线程底部,这是

AFAIK,您不需要匹配的“ HTTPS”常量- OS X 唯一-因为iOS可以相互推论。

但是显然这是行不通的。

the more recent thread中,有一个响应,它使用这些常量字符串kCFStreamPropertyHTTPProxyHostkCFStreamPropertyHTTPProxyPort"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

后两种配置都可以使用。