Je veux utiliser Alamofire pour récupérer un jeton de porteur à partir de l'API Web, mais je suis nouveau sur ios et alamofire. Comment puis-je accomplir cela avec Alamofire?
func executeURLEncodedRequest(url: URL, model: [String : String]?, handler: RequestHandlerProtocol) {
addAuthorizationHeader()
Alamofire.request(.POST,createUrl(url), parameters: model, headers: headers,encoding:.Json)
}
Eh bien, vous n'avez pas vraiment besoin d'Alamofire pour le faire (cela peut être fait simplement en utilisant un simple NSURLRequest
) mais voici:
let headers = [
"Content-Type": "application/x-www-form-urlencoded"
]
let parameters = [
"myParameter": "value"
]
let url = NSURL(string: "https://something.com")!
Alamofire.request(.POST, url, parameters: parameters, headers: headers, encoding: .URLEncodedInURL).response { request, response, data, error in
print(request)
print(response)
print(data)
print(error)
}
Je pense que les en-têtes peuvent être omis car alamofire ajoutera l'en-tête Content-Type
Approprié. Dites moi si ca marche.
Vous pouvez également trouver une tonne de spécifications avec des exemples ici .
Voici un exemple de code qui devrait fonctionner avec Alamofire 4.x et Swift 3.x à partir d'août 2017:
let parameters = [
"myParameter": "value"
]
Alamofire.request("https://something.com", method: .post, parameters: parameters, encoding: URLEncoding()).response { response in
print(response.request)
print(response.response)
print(response.data)
print(response.error)
}
Il n'est pas nécessaire de définir l'en-tête de type de contenu de manière explicite, car il est défini automatiquement par Alamofire.
Alamofire 4.7.3 et Swift 4.0 ci-dessus
Selon la documentation for POST Request With URL-Encoded Parameters
let parameters: Parameters = [
"foo": "bar",
"val": 1
]
// All three of these calls are equivalent
Alamofire.request("https://httpbin.org/post", method: .post, parameters: parameters)
Alamofire.request("https://httpbin.org/post", method: .post, parameters: parameters, encoding: URLEncoding.default)
Alamofire.request("https://httpbin.org/post", method: .post, parameters: parameters, encoding: URLEncoding.httpBody)
// HTTP body: foo=bar&val=1