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