我正在尝试使用Alamofire(标头令牌身份验证)发出POST请求但是我被抛出错误
无法将'[String:String]'类型的值转换为预期的参数类型'[String:String]'
我该如何解决?
这是我的代码:
func validationSuccessful() {
let Auth_header = [ "Authorization" : Data.sharedInstance.token ]
Alamofire.Manager.sharedInstance.request(.POST, Data.weeklyEndpoint, headers: Auth_header, parameters: ["username": Data.sharedInstance.userName!, "password": Data.sharedInstance.passWord!]).responseJSON {
response in
if let result = response.result.value
{
print(response.request)
print(response.response)
print(response.result)
}
else
{
print("JSON data is nil.")
}
}
}
答案 0 :(得分:3)
您的Data.sharedInstance.token是可选的...要修复此问题,您可以编写
let Auth_header = [ "Authorization" : Data.sharedInstance.token ?? "" ]
但你应该先检查你的令牌是否为零。例如:
guard let token = Data.sharedInstance.token else { print("Empty token"); return }
let Auth_header = [ "Authorization" : token ]
答案 1 :(得分:0)
您可以使用如下代码 AF.request(URL_THEARTER,方法:.get,参数:nil,编码:JSONEncoding.default,标头:HTTPHeaders.init(BEARER_HEADER))。responseJSON {(reponse)in
答案 2 :(得分:-1)
经过四个小时的挣扎,我也遇到了同样的问题。下面的链接可以帮助我解决问题。
https://stackoverflow.com/a/50149146/7417935
实际上我在回复中清楚地标明
应用程序传输安全策略要求安全连接。
如上面的链接所述,我们必须添加条目
将App Transport安全设置添加为字典
然后添加运输安全性的子级
允许任意加载,为布尔值并将其设置为true / YES。