Estoy usando la utilidad de línea de comando cURL para enviar HTTP POST a un servicio web. Quiero incluir el contenido de un archivo como la entidad del cuerpo de la POST. He intentado usar -d </path/to/filename>
así como otras variantes con información de tipo como --data </path/to/filename> --data-urlencode </path/to/filename>
etc. El archivo siempre está adjunto. Lo necesito como entidad del cuerpo.
208
cat file.txt | curl --data "@-" `(< url.txt )`
@-
le dice a curl que lea desde stdin. También puedes usar la redirección(< x.txt )
para poner lo que quieras. Si estás usando bash.--data-binary
en lugar de--data
.name:value
pares, como un nombre de usuario y una contraseña, agregue los encabezados necesarios que coincidan con lo que el servicio espera:--header: "<header_name>:<header_value>"
como una sola cadena.Sé que la pregunta ha sido respondida, pero en mi caso estaba tratando de enviar el contenido de un archivo de texto a la API de Slack Webhook y, por alguna razón, la respuesta anterior no funcionó. De todos modos, esto es lo que finalmente hizo el truco para mí:
fuente
curl: argument list too long
en ese caso la respuesta aceptada es un salvavidascurl --data "@/path/to/filename" http://...
En mi caso,
@
causó algún tipo de problema de codificación, todavía prefiero mi forma anterior:fuente