Я не могу понять, как отслеживать перенаправления с внешнего URL. URL, к которому я обращаюсь, по какой-то причине дает мне 301, хотя я не получаю его в почтальоне. Мне интересно, как я могу заставить HTTPClient следовать перенаправлению или я делаю что-то не так, чтобы получить 301.
Я прочитал этот PR , но я не думаю, что он больше актуален. Документация HTTPClient также не охватывает перенаправления.
В приведенном ниже примере я установил User-Agent таким же, как Postman, чтобы максимально имитировать запрос Postman.
Пока мой код:
import Vapor
import HTTP
protocol DataFetching {
func getFromURL(_ url: URL, on worker: Worker) throws -> Future<HTTPResponse>
}
class DataFetcher: DataFetching {
enum Error: Swift.Error {
case unknown
}
func getFromURL(_ url: URL, on worker: Worker) throws -> Future<HTTPResponse> {
guard let host = url.host else { throw Error.unknown }
var headers = HTTPHeaders()
headers.replaceOrAdd(name: .userAgent, value: "PostmanRuntime/7.4.0")
headers.replaceOrAdd(name: .accept, value: "*/*")
headers.replaceOrAdd(name: .cacheControl, value: "no-cache")
headers.replaceOrAdd(name: .applyToRedirectRef, value: "true")
headers.replaceOrAdd(name: .acceptEncoding, value: "gzip, deflate")
let httpRequest = HTTPRequest(method: .GET, url: url, version: HTTPVersion(major: 1, minor: 1), headers: headers)
return HTTPClient.connect(hostname: host, on: worker).flatMap { client in
return client.send(httpRequest)
}
}
}
Чего мне не хватает?