J'ai un scénario de travail utilisant Postman en passant des paramètres d'URL. Maintenant, lorsque j'essaie de le faire via Alamofire à Swift, cela ne fonctionne pas.
Comment voulez-vous créer cette URL dans Alamofire? http: // localhost: 8080 /? test = 12
_url = "http://localhost:8080/"
let parameters: Parameters = [
"test": "123"
]
Alamofire.request(_url,
method: .post,
parameters: parameters,
encoding: URLEncoding.default,
headers: headers
Le problème est que vous utilisez URLEncoding.default
. Alamofire interprète URLEncoding.default
Différemment en fonction du HTTP method
que vous utilisez.
Pour les demandes GET
, HEAD
et DELETE
, URLEncoding.default
Code les paramètres sous forme de chaîne de requête et les ajoute à l'URL, mais pour toute autre méthode ( comme POST
), les paramètres sont codés en tant que chaîne de requête et envoyés en tant que corps de la requête HTTP.
Pour utiliser une chaîne de requête dans une requête POST
, vous devez modifier votre argument encoding
en URLEncoding(destination: .queryString)
.
Vous pouvez voir plus de détails sur la façon dont Alamofire gère les paramètres de requête ici .
Votre code devrait ressembler à:
_url = "http://localhost:8080/"
let parameters: Parameters = [
"test": "123"
]
Alamofire.request(_url,
method: .post,
parameters: parameters,
encoding: URLEncoding(destination: .queryString),
headers: headers)
Si vous voulez que vos paramètres soient utilisés dans la chaîne de requête, utilisez .queryString comme URLEncoding, comme dans: (je suppose que vous avez des en-têtes quelque part)
let _url = "http://localhost:8080/"
let parameters: Parameters = [
"test": "123"
]
Alamofire.request(_url,
method: .post,
parameters: parameters,
encoding: URLEncoding.queryString,
headers: headers)
Ce formulaire est suggéré par l’auteur Alamofire car il s’agit plus d’une coïncidence, voir capture d’écran:
Voir l'original ici