Как HTTP-соединение с URLRequest в Swift
Я хочу установить TCP-туннель через HTTP(S) прокси с API высокого уровня, т.е. URLRequest
предоставляемые iOS/macOS SDK в Swift с HTTP CONNECT
команда. У меня есть следующий код, предполагая, что прокси работает localhost:8080
:
import Foundation
let session = URLSession(configuration: .default)
var request = URLRequest(url: URL(string: "http://localhost:8080")!)
request.httpMethod = "CONNECT"
let semaphore = DispatchSemaphore(value: 0)
let task = session.dataTask(with: request) {
data, response, error in
dump(error)
semaphore.signal()
}
task.resume()
semaphore.wait()
Теперь построенный HTTP-запрос выглядит так:
CONNECT / HTTP/1.1
Host: localhost:8080
…
Итак, моя проблема: как мне установить цель запроса, которая в настоящее время /
например example.com:80
, Ожидаемый запрос должен выглядеть так:
CONNECT example.com:80 HTTP/1.1
Host: localhost:8080
…
Чтобы увидеть запрос, просто запустите:
nc -l 8080