我们可以同时使用系统代理和NSURLSessionConfiguration代理吗?

时间:2016-08-19 15:18:48

标签: ios objective-c proxy nsurlsession

看起来只有一个正在生效。

  

系统代理在Settings-Wifi-HttpProxy中指定。

     

应用内代理指定为:

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration ephemeralSessionConfiguration];

NSMutableDictionary *proxyDict= [[NSMutableDictionary alloc] init];
[proxyDict setObject: @1 forKey:@"HTTPSEnable"];

[proxyDict setObject: proxyIP forKey:@"HTTPSProxy"];
[proxyDict setObject: @80 forKey:@"HTTPSPort"];
configuration.connectionProxyDictionary = proxyDict;

我们如何同时使用两者?

1 个答案:

答案 0 :(得分:0)

根据我的理解,会话中指定的代理字典会取代系统代理字典中所有在该会话中发出的请求。

如果要修改现有配置(例如,添加当前只存在HTTP代理的HTTPS代理),则需要先使用SCDynamicStoreCopyProxies获取系统提供的代理列表,然后再修改它

如果您正在尝试链接代理,除了手动构建代理URL之外,我不知道有任何其他机制。我很确定没有系统提供的机制来执行此操作,因为这不是通常会使用的那种配置。

如果您的应用正在做一些不寻常的事情,例如使用内置于您的应用中的代理执行特殊操作,然后需要将不匹配的请求转发给系统代理,那么您应用的内置代理应该重新制作在不同的会话中的请求,以便尊重任何系统提供的代理。