我一直在看苹果的WWWDC 2015 Session 711:“与NSURLSession联网”。最后,演讲者提到URLSessionStreamTask
,它可以用于直接插座I/O。他还提到了一个(HTTP)代理连接如何转换为流任务。如何与URLSession进行代理连接?
一个幻灯片包含:
NSURLSessionStreamTask
DataTask conversion
NSURLSessionDataTask may be converted to a stream task
• Use NSURLSession to get through HTTP proxies
Conversion can occur when response is received
而接下来的幻灯片有部分示例代码:
func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask,
didReceiveResponse response: NSURLResponse,
completionHandler: (NSURLSessionResponseDisposition) -> Void) {
completionHandler(.BecomeStream)
}
func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask,
didBecomeStreamTask streamTask: NSURLSessionStreamTask) {
}
我想知道如何创建摆在首位的代理连接。如果可能的话,使用“System Preferences”:Network:Advanced:Proxies面板中的数据。 (不只是“HTTP”代理,但具有相同的格式。任何其他4)
而且因为他们通常使用HTTP,而不是HTTPS,做这样的连接触发ATS(应用程序传输安全性)?
我问的是老派的20世纪90年代的代理,我认为使用HTTP连接。我认为,今天这些仍在使用。您在WebSocket上提供的链接也提到了HTTP-CONNECT。 – CTMacUser
您是否在问如何直接使用它来与不会说HTTP/HTTPS的任意服务器通话?我不认为你可以做到这一点,而无需实现自己的自定义HTTP库。但是,NSURLSession/Connection代码会在需要通过用户为系统范围使用配置的代理建立HTTPS连接时自动使用该命令。 – dgatwood
是不是代理流程:1 - 使用HTTP连接到目标服务器的主机名和端口的代理服务器需要代理的任何用户名/密码一起。 2 - 如果代理服务器返回OK代码,请使用所需协议的连接,对吧?我在问如何构建(1)所需的URLRequest。 – CTMacUser