我正在尝试在 swiftNIO 之上使用 swift 创建摘要身份验证。最后我收到以下错误:操作无法完成。(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")
}
}
}
不幸的是,我没有找到其他方法来创建标题。我必须传递“”的值,因为响应头必须是(维基百科):“授权:”,然后是其余的。这是我生成的响应标头的示例: [("Authorization: Digest username=\"myuser\",realm=\"Testserver\",nonce=\"4F4L1eHYktYv6n7LR4s5yyL5uMiVgKSg\",uri=\" http://myurl \" ,响应=\"4bc3cdfc727bec9edebf6a55dac677a7\"", "")]
我不确定这个错误:是因为我的 headerresponse 还是因为我从主线程而不是我的委托内部创建了一个新请求,但 httpclient 始终是同一个实例。如果它位于标头响应上,似乎没有办法使用 async-http-client 将响应字符串直接写入标头。
谢谢阿诺德