swift - example - Cómo agregar parámetros URL de Alamofire
swiftyjson (2)
Tengo un escenario de trabajo usando Postman pasando parámetros de URL. Ahora, cuando trato de hacerlo a través de Alamofire en Swift, no funciona.
¿Cómo crearías esta url en Alamofire? http://localhost:8080/?test=123
_url = "http://localhost:8080/"
let parameters: Parameters = [
"test": "123"
]
Alamofire.request(_url,
method: .post,
parameters: parameters,
encoding: URLEncoding.default,
headers: headers
El problema es que estás usando URLEncoding.default . Alamofire interpreta URLEncoding.default diferente según el method HTTP que esté utilizando.
Para las solicitudes GET , HEAD y DELETE , URLEncoding.default codifica los parámetros como una cadena de consulta y la agrega a la URL, pero para cualquier otro método (como POST ) los parámetros se codifican como una cadena de consulta y se envían como el cuerpo de La solicitud HTTP.
Para utilizar una cadena de consulta en una solicitud POST , debe cambiar su argumento de encoding a URLEncoding(destination: .queryString) .
Puede ver más detalles sobre cómo Alamofire maneja los parámetros de solicitud here .
Su código debe verse como:
_url = "http://localhost:8080/"
let parameters: Parameters = [
"test": "123"
]
Alamofire.request(_url,
method: .post,
parameters: parameters,
encoding: URLEncoding(destination: .queryString),
headers: headers)
Si desea que sus parámetros se usen en la cadena de consulta, use .queryString como URLEncoding, como en: (Supongo que tiene encabezados en algún lugar)
let _url = "http://localhost:8080/"
let parameters: Parameters = [
"test": "123"
]
Alamofire.request(_url,
method: .post,
parameters: parameters,
encoding: URLEncoding.queryString,
headers: headers)
Este formulario es sugerido por el autor de Alamofire porque es más una coincidencia con el otro, vea la captura de pantalla:
Ver original here