[swift] alamofire에서 upload 사용시 CredStore - performQuery - Error copying matching creds 발생
스위프트에서 alamofire를 잘 이용하고 있었습니다.
보통은 alamofire.request() 함수를 사용했었는데 서버로 파일을 전달해야 해서..
최근에 alamofire.upload() 함수를 사용해봤습니다.
인터넷에 검색한 내용을 따라 upload 함수를 사용하니.. 동작은 잘 됐습니다.
서버에 파일도 잘 업로드 됐구요..
그런데 찝찝하게 중간에 아래의 에러? 로그가 발생했습니다.
CredStore - performQuery - Error copying matching creds. Error=-25300, query={
class = inet;
"m_Limit" = "m_LimitAll";
ptcl = htps;
"r_Attributes" = 1;
sdmn = "xxx.yyy.com";
srvr = "xxx.yyy.com";
sync = syna;
}
무슨 말인지도 모르겠으나..
https://stackoverflow.com/a/46806008/7225691 에 따르면
let protectionSpace = URLProtectionSpace.init(host: host,
port: port,
protocol: "http",
realm: nil,
authenticationMethod: nil)
var credential: URLCredential? = URLCredentialStorage.shared.defaultCredential(for: protectionSpace)
와 같이.. URLProtectionSpace 를 마음대로 만들어서 URLCredentialStorage에서 URLCredential을 구하려고 하면 발생하는 로그라고 합니다..
Alamofire 코드에서.. 이 URLCredentialStorage에 접근하는 코드를 찾아보면.. Request.swift에 유일하게 있습니다..
cURLRepresentation() 함수에 있네요.
if let credentialStorage = self.session.configuration.urlCredentialStorage {
let protectionSpace = URLProtectionSpace(
host: host,
port: url.port ?? 0,
protocol: url.scheme,
realm: host,
authenticationMethod: NSURLAuthenticationMethodHTTPBasic
)
if let credentials = credentialStorage.credentials(for: protectionSpace)?.values {
for credential in credentials {
guard let user = credential.user, let password = credential.password else { continue }
components.append("-u \(user):\(password)")
}
} else {
if let credential = delegate.credential, let user = credential.user, let password = credential.password {
components.append("-u \(user):\(password)")
}
}
}
이 함수는 동일 파일에서 사용됩니다.
open var debugDescription: String {
return cURLRepresentation()
}
debugDescription이라는 변수에 접근하면.. 그 함수가 불리네요;;
정확하게 어떤 과정에서.. 이 debugDescription이 불리는 지는 모르겠으나..
어쨋든 확실해졌습니다.
Alamofire.upload(
multipartFormData: { MultipartFormData in
}, to: "https://xxx.yyy.com/aaa.php") { (result) in
print("result: \(result)")
}
디버그를 위해.. 추가했던 위의 코드로 인해 문제의 로그가 발생한 것이었습니다.
alamofire 측의 버그 같으며.. 별 문제 없는 무시해도 되는 로그 같습니다. ㅡㅡ;
댓글 영역