Подтвердить что ты не робот

Дополнительный аргумент "метод" в вызове

Ошибка при вызове метода запроса Alamofire в последней версии (4.0.0).

Синтаксис:

Alamofire.request(urlString,method: .post, parameters: requestParams, encoding: .JSON, headers: [:])

тип requestParam - [String: Any]

4b9b3361

Ответ 1

У меня возникла проблема, я должен использовать JSONEncoding.default вместо .JSON, поэтому новый синтаксис

Alamofire.request(urlString,method: .post, parameters: requestParams, encoding: JSONEncoding.default, headers: [:])

Ответ 2

Я могу ссылаться только на: https://github.com/Alamofire/Alamofire/issues/1508#issuecomment-246207682

В принципе, если один из ваших параметров имеет неправильный тип, быстрый компилятор предположит, что вы используете request(urlRequest:URLRequestConvertible), а затем method является extra argument

Повторите эти параметры и убедитесь, что все имеет правильный тип (Parameters?, ParameterEncoding и HTTPHeaders)

Ответ 3

У меня была та же проблема, проблема в типе параметров, она должна быть типа [String: Any]. После того, как я сделал это изменение, это сработало для меня.

 Alamofire.request(youUrl, method: .post, parameters: param as? [String: Any], encoding: JSONEncoding.default, headers: [:])
                .responseJSON { response in

Ответ 4

Это означает, что некоторые из типов параметров ошибочны, убедитесь, что вы отправляете эти значения:

url: String
method: HTTPMethod  (E.g: .post)
parameters: [String:Any]
encoding: ParameterEncoding  (E.g: JSONEncoding.default)
headers: [String: String]

Ответ 5

Обновлен для 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

            }
        }

Ответ 6

Убедитесь, что ваш parameters - [String: Any]

i.e

let parameters = ["foo": "bar"]

Не

let parameters : Parameter = ["foo": "bar"]

Ответ 7

Я исправил это, убедившись, что мои requestUrls - это строки, а не типы URL. Также я удалил аргументы параметров, когда параметр был равен нулю.

например.

Alamofire.request(requestUrl, method: .get, encoding: URLEncoding.default)

Ответ 8

Вы получаете эту ошибку из-за неправильных типов данных.

Тип параметров должен быть [String: Any], а тип параметров не должен быть необязательным.

Тип заголовка должен быть [String: String] или nil, а тип заголовка также не должен быть необязательным.

Надеюсь, поможет. :-)

Ответ 9

Методы Almofire изменены в Swift 3 следующим образом:

  • Параметры порядка (url, затем тип метода).
  • Изменить кодировку Enum как "JSONEncoding.default", например.

Ответ 10

Это семейство функций, которые очень похожи, что заставляет компилятор думать, что вы пытаетесь использовать другую функцию. Дважды проверьте, что ВСЕ аргументы, которые вы поставляете, являются ПРАВИЛЬНЫМ ТИПОМ, который ожидается. Например, я передавал [String: Any] вариант с заголовками, который ожидал [String: String] и получил ту же ошибку.

Ответ 11

Это всегда потому, что im использует необязательные переменные в любом из параметров

Ответ 12

Я столкнулся с той же проблемой и попробую ответить всем, как ранее здесь, И тогда я получил решение и причину этой проблемы.

Это происходит из-за неправильного анализа объекта в запросе и, наконец, решения -

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 нет параметров.

Ответ 13

Моя проблема заключалась в необязательных параметрах в заголовках, которые не были развернуты.

Ответ 14

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)
            }
        }

Ответ 15

просто убедитесь, что все параметры в правильном формате, главное, чтобы параметры были в массиве типа [String: Any].