2010-05-21 28 views
25

¿Hay alguna manera de usar curl para enviar una solicitud POST sin enviar datos?POST con curl sin enviar datos

Fijamos generalmente como:

curl --data @C:\mydata.txt http://1.2.3.4/myapi 

Si se omite el --data que está haciendo un GET. ¿Cómo se puede omitir y todavía hacer un POST?

Respuesta

43

encontrar de forma aleatoria la solution en otro mensaje:

curl -X POST http://example.com

+0

Nice. Estoy en esta situación también, pero se siente un poco extraño. Me pregunto si sería más apropiado cambiar la llamada a un GET. Sé que esto ya tiene algunos años, pero ¿hay algún pensamiento al respecto? –

+7

En mi caso, tuve que usar --data "" de lo contrario, obtendría una url 411: curl -X POST --data "" – unify

+2

@KyleClegg La llamada debería ser una POST si está diseñada para cambiar algo, y podría dar un resultado diferente cada vez que se llama. No enviar datos no significa que no cambiará algo. Entonces, en ese caso, no sería apropiado cambiar la llamada a un GET. –

2

Esto es un poco un truco, pero siempre se puede proporcionar un archivo vacío --data.

Alternativamente

cat /dev/null | curl --data @- http://... 
+0

Derecha. También puede usar '--data xxx' .. –

0

En caso de libcurl con PHP:

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); 
1

Otra opción es el envío de una solicitud con cuerpo vacío, como ese:

curl http://example.com -d {} 
Cuestiones relacionadas