我一直在看蘋果的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