在最新版本(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