Swift Digest Authentication async-http-client
Я пытаюсь создать дайджест-аутентификацию, используя swift поверх swiftNIO. В конце я получаю следующую ошибку: Операция не может быть завершена. (Ошибка NIO.NIOConnectionError 1.)
Вот мой способ:
// in the delegate I create my authorizationHeader
let authorizationHeader = try httpClient.execute(request: digestRequest , delegate: delegate).wait()
то в основном потоке я делаю следующее:
var request = try HTTPClient.Request(url: url, method: .GET)
request.headers.add(name: "Authorization: \(authorizationHeader.description)" , value: "")
print (request.headers.description)
httpClient.execute(request: request).whenComplete { result in
switch result {
case .failure(let error):
print (error.localizedDescription)
case .success(let response):
if response.status == .ok {
print (response.status)
} else {
print ("error in response")
}
}
}
К сожалению, другого способа создать заголовок я не нашел. Мне пришлось передать значение "", потому что заголовок ответа должен быть (Википедия): "Авторизация:", а затем все остальное. Вот пример моего генерируемого заголовка ответа: [("Авторизация: Digest username=\"myuser\",realm=\"Testserver\", nonce =\"4F4L1eHYktYv6n7LR4s5yyL5uMiVgKSg\", uri = \" http://myurl/\",response=\"4bc3cdfc727bec9edebf6a55dac677a7\"", "")]
Я не уверен в ошибке: это из-за моего ответа на заголовок или из-за того, что я создаю новый запрос из основного потока, а не внутри моего делегата, но httpclient всегда один и тот же экземпляр. Если он находится в ответе заголовка, кажется, что не существует способа напрямую записать строку ответа в заголовок с помощью async-http-client.
Спасибо, Арнольд