Ошибка при вызове метода запроса Alamofire в последней версии (4.0.0).
Синтаксис:
Alamofire.request(urlString,method: .post, parameters: requestParams, encoding: .JSON, headers: [:])
тип requestParam - [String: Any]
Ошибка при вызове метода запроса Alamofire в последней версии (4.0.0).
Синтаксис:
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
В принципе, если один из ваших параметров имеет неправильный тип, быстрый компилятор предположит, что вы используете request(urlRequest:URLRequestConvertible)
, а затем method
является extra argument
Повторите эти параметры и убедитесь, что все имеет правильный тип (Parameters?
, ParameterEncoding
и HTTPHeaders
)
У меня была та же проблема, проблема в типе параметров, она должна быть типа [String: Any]. После того, как я сделал это изменение, это сработало для меня.
Alamofire.request(youUrl, method: .post, parameters: param as? [String: Any], encoding: JSONEncoding.default, headers: [:])
.responseJSON { response in
Это означает, что некоторые из типов параметров ошибочны, убедитесь, что вы отправляете эти значения:
url: String
method: HTTPMethod (E.g: .post)
parameters: [String:Any]
encoding: ParameterEncoding (E.g: JSONEncoding.default)
headers: [String: String]
Обновлен для 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
}
}
Убедитесь, что ваш parameters
- [String: Any]
i.e
let parameters = ["foo": "bar"]
Не
let parameters : Parameter = ["foo": "bar"]
Я исправил это, убедившись, что мои requestUrls - это строки, а не типы URL. Также я удалил аргументы параметров, когда параметр был равен нулю.
например.
Alamofire.request(requestUrl, method: .get, encoding: URLEncoding.default)
Вы получаете эту ошибку из-за неправильных типов данных.
Тип параметров должен быть [String: Any], а тип параметров не должен быть необязательным.
Тип заголовка должен быть [String: String] или nil, а тип заголовка также не должен быть необязательным.
Надеюсь, поможет. :-)
Методы Almofire изменены в Swift 3 следующим образом:
Это семейство функций, которые очень похожи, что заставляет компилятор думать, что вы пытаетесь использовать другую функцию. Дважды проверьте, что ВСЕ аргументы, которые вы поставляете, являются ПРАВИЛЬНЫМ ТИПОМ, который ожидается. Например, я передавал [String: Any] вариант с заголовками, который ожидал [String: String] и получил ту же ошибку.
Это всегда потому, что im использует необязательные переменные в любом из параметров
Я столкнулся с той же проблемой и попробую ответить всем, как ранее здесь, И тогда я получил решение и причину этой проблемы.
Это происходит из-за неправильного анализа объекта в запросе и, наконец, решения -
theJSONText
- строка JSON
urlStr
- строка URL
let urlEncoadedJson = theJSONText.addingPercentEncoding(withAllowedCharacters:.urlHostAllowed)
let urls = NSURL(string:"urlStr\(urlEncoadedJson ?? "")")
let method: HTTPMethod = .get
Alamofire.request(urls! as URL, method: method, parameters: nil, encoding: JSONEncoding.default, headers: nil).responseJSON { (response:DataResponse<Any>) in
switch(response.result) {
case .success(_):
if response.result.value != nil
{
// write your code here
}
break
case .failure(_):
if response.result.error != nil
{
print(response.result.error!)
}
break
}
}
Примечание. В моем URL нет параметров.
Моя проблема заключалась в необязательных параметрах в заголовках, которые не были развернуты.
Alamofire.request(url, method: .post, parameters: parameters, encoding:
JSONEncoding.default, headers: [:]).responseJSON
{ response in
switch (response.result) {
case .success:
print(response)
break
case .failure:
print(Error.self)
}
}
просто убедитесь, что все параметры в правильном формате, главное, чтобы параметры были в массиве типа [String: Any].