在最新版本(4.0.0)中调用Alamofire请求方法时出现错误。
语法如下:
Alamofire.request(urlString,method: .post, parameters: requestParams, encoding: .JSON, headers: [:])
requestParam的类型是[String:Any]
我明白了问题,我需要使用JSONEncoding.default而不是.JSON,因此新的语法为
Alamofire.request(urlString,method: .post, parameters: requestParams, encoding: JSONEncoding.default, headers: [:])
我只能引用以下链接:https://github.com/Alamofire/Alamofire/issues/1508#issuecomment-246207682
基本上,如果你的参数类型错误,Swift编译器将假定你正在使用request(urlRequest:URLRequestConvertible)
,然后method
是一个额外的参数
。
请再检查一下参数,并确保所有参数都是正确的类型(Parameters?
,ParameterEncoding
和HTTPHeaders
)。
let urlString = "host"
更改为 static let urlString = "host"
,因为 urlString
变量附加到类上,而我正在编写一个类函数。 - simple_code我遇到了同样的问题,问题在于参数类型,它应该是[String: Any]类型。当我进行了这个更改后,它对我起作用了。
Alamofire.request(youUrl, method: .post, parameters: param as? [String: Any], encoding: JSONEncoding.default, headers: [:])
.responseJSON { response in
更新至 Swift 3:
let requestString = "https://thawing-inlet-46474.herokuapp.com/charge.php"
let params = ["stripeToken": token.tokenId, "amount": "200", "currency": "usd", "description": "testRun"]
Alamofire.request(requestString,method: .post, parameters: params, encoding: JSONEncoding.default, headers: [:]).responseJSON { (response:DataResponse<Any>) in
switch(response.result) {
case .success(_):
if response.result.value != nil{
print("response : \(response.result.value)")
}
break
case .failure(_):
print("Failure : \(response.result.error)")
break
}
}
这意味着某些参数类型错误,请检查您发送的这些值:
url: String
method: HTTPMethod (E.g: .post)
parameters: [String:Any]
encoding: ParameterEncoding (E.g: JSONEncoding.default)
headers: [String: String]
请确保您的参数
为[String: Any]
例如:
let parameters = ["foo": "bar"]
注意:
let parameters : Parameter = ["foo": "bar"]
[AnyHashable: Any]
。 - Dielson Sales我通过确保我的请求URL是字符串,而不是URL类型来解决了这个问题。此外,当参数为nil时,我删除了参数参数。
例如:
Alamofire.request(requestUrl, method: .get, encoding: URLEncoding.default)
以下是Swift 3中Almofire方法的更改:
.utf8
和类似的东西行不通,甚至只是.default
也不行。必须是长名称:JSONEncoding.default
。 - Alejandro Iván这是一组非常相似的函数,这使得编译器认为您正在尝试使用不同的函数。请仔细检查您提供的所有参数是否都是预期的正确类型。例如,我在传递带有标头的变量时传递了[String:Any],但它期望[String:String],因此出现了相同的错误。
Alamofire.request(urlString, method: .post, parameters: requestParams, encoding: .JSON, headers: [:])
- netdigger