web-dev-qa-db-fra.com

Argument supplémentaire 'méthode' dans l'appel

Obtenir une erreur lors de l'appel de la méthode de requête Alamofire dans la dernière version (4.0.0).

La syntaxe est la suivante:

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

le type de requestParam est [String: Any].

52
CMA

J'ai eu le problème, je dois utiliser JSONEncoding.default au lieu de .JSON, donc la nouvelle syntaxe est

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

Je ne peux que vous diriger vers: https://github.com/Alamofire/Alamofire/issues/1508#issuecomment-246207682

Fondamentalement, si l’un de vos paramètres est de type incorrect, le compilateur Swift supposera que vous utilisez request(urlRequest:URLRequestConvertible)]), puis le method est un extra argument

Repassez ces paramètres à nouveau et assurez-vous que tout est de type correct (Parameters?, ParameterEncoding et HTTPHeaders)

50
netigger

J'avais le même problème, le problème est de type paramètres, il devrait être de type [String: Any]. Après avoir apporté ce changement, cela a fonctionné pour moi.

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

Mis à jour pour 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

            }
        }
10
A.G

Cela signifie que certains types de paramètres sont incorrects, vérifiez que vous envoyez ces valeurs:

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

Assurez-vous que votre parameters est [String: Any]

c'est à dire

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

pas:

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

Vous obtenez cette erreur en raison de mauvais types de données.

Le type de paramètre doit être [String: Any] et le type de paramètre ne doit pas être facultatif.

Le type d'en-tête doit être [String: String] ou nil et le type d'en-tête ne doit pas non plus être facultatif.

J'espère que ça aide. :-)

5
Mayur Rathod

J'ai résolu ce problème en m'assurant que mes requestUrl sont des chaînes et non des types d'URL. De plus, j'ai supprimé les arguments de paramètre pour quand le paramètre était nul.

Par exemple.

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

4
Phil Hudson

Les méthodes Alamofire ont été modifiées dans Swift 3 comme suit:

  1. Modifiez Encoding Enum pour qu'il devienne "JSONEncoding.default" par exemple.
  2. .
3
Ahmed Lotfy

C'est une famille de fonctions très similaires, ce qui laisse penser au compilateur que vous essayez d'utiliser une fonction différente. Vérifiez deux fois que TOUS les arguments que vous fournissez sont le type correct attendu. Par exemple, je passais [String: Any] pour la variante avec en-têtes, qui attendait [String: String] et obtenait la même erreur.

3
Matjan

C'est toujours parce que j'utilise des variables optionnelles dans tous les paramètres

2
SoliQuiD

Je faisais face au même problème et essayez avec toutes les réponses comme précédemment, ici, et puis j'ai eu la solution et la raison de ce problème.

Ceci est dû à la mauvaise analyse d'objet dans la requête, et finalement à la solution -

theJSONText - chaîne JSON

urlStr - Chaîne d'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
        }

    }

Remarque - Il n'y a pas de paramètre dans mon URL.

2
Abhishek Mishra

Mon problème était dans les paramètres facultatifs dans les en-têtes qui n'étaient pas déballés.

1
Jakub Vodak

assurez-vous simplement que tous les paramètres sont dans le bon format, le plus important étant qu'ils soient dans un tableau de type [String: Any].

0
Suraj Gaur
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)
            }
        }
0
CSE 1994