如何在SWIFT 3中为NSURLSession添加HTTPS代理

3

我已经使用下面的代码来连接代理服务器,对于HTTP请求非常有效,但是对于HTTPS请求不起作用。在iOS 9.0中,kCFStreamPropertyHTTPSProxyHostkCFStreamPropertyHTTPSProxyPort已经被弃用。

let myPortInt = 12345;
let myProxyUrlString = "myProxyURL";

    let sessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration();
    sessionConfiguration.connectionProxyDictionary = [
        kCFNetworkProxiesHTTPEnable: true,
        kCFNetworkProxiesHTTPPort: myPortInt,
        kCFNetworkProxiesHTTPProxy: myProxyUrlString,
    ]
    let url = NSURL(string: endPointUrl)
    let postRequest = NSMutableURLRequest(URL: url!, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 10.0)


    let jsonString =  bodyString
    postRequest.HTTPBody = jsonString 
    postRequest.HTTPMethod = "POST"
    postRequest.setValue("application/json", forHTTPHeaderField: "Content-Type")

    let session = NSURLSession(configuration: sessionConfiguration)       
    let task = session.dataTaskWithRequest(postRequest){}

我也想做同样的事情... 你能建议我使用哪个库/类来完成代理吗?我正在努力将我的 WebView 流量通过代理服务器传递。 - Mrug
1个回答

0
我找到了关于如何将HTTPS代理添加到NSURLSession的解决方案。
   let proxyDict : NSDictionary = ["HTTPEnable": Int(1), "HTTPProxy": myProxyUrlString, "HTTPPort": myPortInt, "HTTPSEnable": Int(1), "HTTPSProxy": myProxyUrlString, "HTTPSPort": myPortInt]

    let sessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration();

这不是正确的方式,因为你永远不知道苹果何时会更改他们的代理字符串,那么上面的代码就会失败。 - Omkar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接