如何在Swift中设置代理?

时间:2014-12-17 14:44:41

标签: ios swift proxy

我刚开始使用iOS技术,并使用Swift开发iPhone应用程序 我正在尝试使用以下代码查询服务器:

var url = NSURL(string: "http://someurl:8080/?type=Refresh")
var request = NSURLRequest(URL: url!)
var connection = NSURLConnection(request: request, delegate: self, startImmediately: true)

但是如果我需要查询该服务器,我需要在我的iPhone设备上设置代理。 所以现在我想在Swift代码中设置http代理(服务器和端口)。

我查看了Apple的CFProxySupport Reference,但没有理解我该如何使用它。 我写了以下代码,直到现在:

var proxy_server: CFString = “proxy” // proxy server
var proxy_port: CFNumber = 8080 // port

var keys: [CFStringRef] = [kCFProxyTypeKey, kCFProxyHostNameKey, kCFProxyPortNumberKey]
var values: [CFTypeRef] = [kCFProxyTypeHTTP, proxy_server, proxy_port]

var proxy_dict: CFDictionary = CFDictionaryCreate(
    kCFAllocatorDefault,
    UnsafeMutablePointer<UnsafePointer<Void>>(keys),
    UnsafeMutablePointer<UnsafePointer<Void>>(values),
    3,
    nil,
    nil)

var proxies: Unmanaged<CFArray> = CFNetworkCopyProxiesForURL(NSURL(string: "http://someurl:8080"), proxy_dict)

有人可以告诉我如何使用proxies设置代理吗? 谢谢!

1 个答案:

答案 0 :(得分:2)

CFProxySupport框架允许您的应用检索已在设备中配置的代理。其中一些代理配置实际上可能是自动代理配置URL /脚本 - 因此CFNetworkCopyProxiesForURL可以评估这些脚本以确定应用于指定URL的代理。

CFProxySupport不允许您配置设备将使用的代理。此外,NSURLConnection并不尊重设备代理设置。您可以使用您拥有的代码来检索已配置的代理,然后将其用于支持使用代理服务器的库(例如NSURLSession或AFNetworking)。在NSURLSession中,您在NSURLSessionConfiguration对象的connectionProxy字典中指定代理配置