设置HTTP代理,在一些优秀的开源或商业的httpClient库,应该是很容易的事,但不包括苹果CFNetwork 和URLSession
1、CFNetwrok HTTP代理设置
首先你要分开CFHTTPMessageRef 和 CFReadStreamRef 这两个,对于HTTP的一些常规设置,有的需要配置前者,有的需要配置后者。HTTP代理设置就配置后者CFReadStreamRef。
代理设置代码也很简单,但要区分HTTP请求还是HTTPS请求,关键字kCFStreamPropertyHTTPProxy
NSDictionary *proxyToUse = nil;
if (scheme_is_https) //HTTPS 代理设置
{
proxyToUse = @{(__bridge NSString*)kCFStreamPropertyHTTPSProxyHost:@"agent.server.cn",
(__bridge NSString*)kCFStreamPropertyHTTPSProxyPort:[NSNumber numberWithInt:8443]
};
}
else //HTTP代理设置
{
proxyToUse = @{(__bridge NSString*)kCFStreamPropertyHTTPProxyHost:@"agent.server.cn",
(__bridge NSString*)kCFStreamPropertyHTTPProxyPort:[NSNumber numberWithInt:808