在最新版本(4.0.0)中调用Alamofire请求方法时出错。呼叫中的额外参数“方法”
的语法是:
Alamofire.request(urlString,method: .post, parameters: requestParams, encoding: .JSON, headers: [:])
requestParam的类型是[字符串:任何]
在最新版本(4.0.0)中调用Alamofire请求方法时出错。呼叫中的额外参数“方法”
的语法是:
Alamofire.request(urlString,method: .post, parameters: requestParams, encoding: .JSON, headers: [:])
requestParam的类型是[字符串:任何]
我的问题,我必须使用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
是extra argument
再说明一下参数,并确保所有正确类型的(Parameters?
,ParameterEncoding
和HTTPHeaders
)
我通过确保我的requestUrls是字符串而不是URL类型来解决这个问题。另外我删除了当参数为nil时的参数参数。
E.g.
Alamofire.request(requestUrl, method: .get, encoding: URLEncoding.default)
Almofire方法夫特3改变为以下:
这是非常相似功能的家庭,这使编译器认为你正在尝试使用不同的功能。仔细检查你提供的所有参数都是预期的正确类型。例如,我为包含头文件的变体[String:Any]传递了[String:String],并得到了相同的错误。
这是正确的。我是我的情况下我传递[String]参数而不是[String:String]并得到 – mourodrigo
这意味着,一些参数类型错了,请检查您要发送这些值:
url: String
method: HTTPMethod (E.g: .post)
parameters: [String:Any]
encoding: ParameterEncoding (E.g: JSONEncoding.default)
headers: [String: String]
更新了斯威夫特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
}
}
确保您parameters
是[字符串:任何]
即
let parameters = ["foo": "bar"]
不:
let parameters : Parameter = ["foo": "bar"]
这是我的错误,我认为它可能是'[AnyHashable:Any]'。 –
我的问题是在那些没有拆开头可选参数。
这是因为任何参数
我解决了我的问题,这个提示...非常感谢 –
我有同样的问题,使用可选变量IM总是,问题是在参数类型,它应该是类型[字符串:任何]。我做了这个改变后,它对我有效。
Alamofire.request(youUrl, method: .post, parameters: param as? [String: Any], encoding: JSONEncoding.default, headers: [:])
.responseJSON { response in
是的,有些时候我们需要定义PARAM。 –
你尝试:'Alamofire.request(urlString,方法:.POST,参数:requestParams,编码:以.json,标题:[:])' – netigger
是的,这是有我想iIhave错过了在编写代码语法。我正在纠正这一点。 – Seema