Encontré muchos ejemplos sobre cómo usar comandos POST simples en cURL, pero no encontré ejemplos sobre cómo enviar comandos HTTP POST completos, que contienen:
- Encabezados (autenticación básica)
- Parámetros HTTP (
s=1&r=33
) - Datos del cuerpo, alguna cadena XML
Todo lo que encontré es:
echo "this is body" | curl -d "ss=ss&qq=11" http://localhost/
Eso no funciona, y envía los parámetros HTTP como el cuerpo.
--header
y esta noRespuestas:
No hay suficiente reputación para comentar, así que deje esto como una respuesta esperando que ayude.
Esto es lo que usé para una operación de colocación de cubo de S3. Los encabezados están en -H y el cuerpo, que es un archivo xml, está en $ {aclfile} después de -T. Puedes ver eso desde la salida:
si los parámetros de URL contienen signos especiales como "+", use --data-urlencode para cada parámetro (que contenga signos especiales) de ellos:
fuente
Los "parámetros" HTTP son parte de la URL:
La autenticación básica tiene una opción separada, no es necesario crear un encabezado personalizado:
El "cuerpo" POST puede enviarse a través de
--data
(forapplication/x-www-form-urlencoded
) o--form
(formultipart/form-data
):Entonces, para resumir:
fuente