使用Basic Auth进行身份验证时遇到问题.我正在使用符合URLRequestConvertible协议的标准枚举来构造我的请求.问题是,当我在枚举中手动设置授权标头时,如下所示:
let user = ***
let password = ***
let credentialData = "\(user):\(password)".dataUsingEncoding(NSUTF8StringEncoding)!
let base64Credentials = credentialData.base64EncodedStringWithOptions([])
mutableURLRequest.setValue("Basic \(base64Credentials)", forHTTPHeaderField: "Authorization")
Run Code Online (Sandbox Code Playgroud)
我总是得到401未经授权的回复.但是,如果我使用authenticate回调设置密码,如下所示:
Alamofire.request(request)
.authenticate(user: "USERNAME_HERE", password: "PASSWORD_HERE")
.responseJSON { (response) -> Void in
print("JSON response \(response)")
completion(success: true, error: nil)
}
Run Code Online (Sandbox Code Playgroud)
它正确验证.我希望能够在enum中手动设置它,URLRequestConvertible而不是传入凭据authenticate.
我知道它正在使用NSURLCredential引擎盖来进行auth挑战,但我希望能够手动设置它.
这是我的URLRequestConvertible实现:
enum CheckedUpAPI: URLRequestConvertible {
static let baseURLString = "https://***"
static let APIKey = "***"
static let APIClientName = "iPad"
case UpdatePatient(String, …Run Code Online (Sandbox Code Playgroud) 我有一个EKCalendarChoosere允许我选择日历的.我看到日历和委托方法(EKCalendarChooserDelegate)被调用.但是,当我访问日历选择器的选定日历属性时,它们始终为空.是否需要手动添加它们或选择器处理它?提前致谢