【问题标题】:How to add a HTTPS proxy to NSURLSession in SWIFT 3如何在 SWIFT 3 中向 NSURLSession 添加 HTTPS 代理
【发布时间】:2017-03-07 20:37:39
【问题描述】:

我已使用以下代码连接到代理服务器,并且仅适用于 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 流量。

标签: ios swift proxy ios9 http-proxy


【解决方案1】:

我找到了将 HTTPS 代理添加到 NSURLsession 的解决方案

   let proxyDict : NSDictionary = ["HTTPEnable": Int(1), "HTTPProxy": myProxyUrlString, "HTTPPort": myPortInt, "HTTPSEnable": Int(1), "HTTPSProxy": myProxyUrlString, "HTTPSPort": myPortInt]

    let sessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration();

【讨论】:

  • 这是不正确的方法,因为你永远不知道苹果什么时候会改变他们的代理字符串然后上面的代码就会失败
猜你喜欢
  • 2014-08-07
  • 1970-01-01
  • 2023-04-05
  • 2021-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-27
  • 1970-01-01
相关资源
最近更新 更多