Estoy tratando de ejecutar una solicitud HTTP en Swift, para enviar los parámetros a una URL.
Ejemplo:
Enlace: www.thisismylink.com/postName.php
Parámetros:
id = 13
name = Jack
¿Cuál es la forma más sencilla de hacer eso?
Ni siquiera quiero leer la respuesta. Solo quiero enviar eso para realizar cambios en mi base de datos a través de un archivo PHP.
post
swift
parameters
http-post
httprequest
angeant
fuente
fuente
Respuestas:
En Swift 3 y versiones posteriores puedes:
Dónde:
Esto verifica tanto los errores de red fundamentales como los errores HTTP de alto nivel. Esto también se escapa correctamente por ciento de los parámetros de la consulta.
Tenga en cuenta que usé una
name
deJack & Jill
, para ilustrar elx-www-form-urlencoded
resultado adecuado dename=Jack%20%26%20Jill
, que está "codificado en porcentaje" (es decir, el espacio se reemplaza por%20
y&
el valor en el valor se reemplaza por%26
).Consulte la revisión anterior de esta respuesta para la interpretación de Swift 2.
fuente
POST
solicitud trivial , puede usar lo anterior.$_POST
y nombres de archivo, reduciría esto a algo más simple: el script PHP no se ejecutará en absoluto si no obtiene la URL correcta. Pero no siempre se debe incluir el nombre de archivo (por ejemplo, el servidor puede estar haciendo enrutamiento de URL o tener nombres de archivo predeterminados). En este caso, el OP nos dio una URL que incluía un nombre de archivo, así que simplemente usé la misma URL que él.URLSession
en este sentido. Todas las API de red son inherentemente asíncronas, como deberían ser. Ahora, si está buscando otras formas elegantes de tratar solicitudes asincrónicas, puede considerar envolverlas (ya seaURLSession
solicitudes o solicitudes de Alamofire) en unaOperation
subclase asincrónica personalizada . O puede usar algunas bibliotecas de promesas, como PromiseKit.Swift 4 y superior
fuente
Para cualquiera que busque una forma limpia de codificar una solicitud POST en Swift 5.
No necesita lidiar con la adición manual de codificación porcentual. Use
URLComponents
para crear una URL de solicitud GET. Luego use laquery
propiedad de esa URL para obtener la cadena de consulta con el porcentaje de escape correcto.La
query
habrá una cadena de escape adecuado:Ahora puede crear una solicitud y usar la consulta como HTTPBody:
Ahora puedes enviar la solicitud.
fuente
Aquí está el método que utilicé en mi biblioteca de registro: https://github.com/goktugyil/QorumLogs
Este método llena formularios html dentro de Google Forms.
fuente
application/x-www-form-urlencoded
Qué estás configurando?fuente
fuente
Todas las respuestas aquí usan objetos JSON. Esto nos dio problemas con los
$this->input->post()
métodos de nuestros controladores Codeigniter. ElCI_Controller
no puede leer JSON directamente. Utilizamos este método para hacerlo SIN JSONAhora su CI_Controller podrá obtener
param1
yparam2
usar$this->input->post('param1')
y$this->input->post('param2')
fuente