2012-04-08 87 views
33

¿Cómo incluyo caracteres especiales como @ y & en los datos de cURL POST? Estoy tratando de pasar un nombre y una contraseña como:Caracteres especiales como @ y & en los datos de cURL POST

curl -d name=john [email protected]&3*J https://www.mysite.com 

Esto causaría problemas como @ se utiliza para la carga de archivos y & para especificar más de una clave/valor. ¿Hay alguna forma de que pueda escapar de estos personajes? \@ y \& no parecen funcionar.

Respuesta

39

cURL> 7.18.0 tiene una opción --data-urlencode que resuelve este problema. El uso de este, simplemente puede enviar una solicitud POST como

curl -d name=john --data-urlencode [email protected]&3*J https://www.mysite.com 
+0

¿Funcionará esto también para los encabezados? –

+0

Tengo 7.52.1 y no puedo hacer que funcione ... Puedo hacer --data-urlencode "algo = es una prueba" pero no con comillas dobles o símbolos @ ... –

27

¿Cómo sobre el uso de los códigos de entidad ...

@ = %40

& = %26

Por lo tanto, tendría que:

curl -d 'name=john&passwd=%4031%263*J' https://www.mysite.com

10

cita doble (" ") funciona todo el URL .Es.

curl "http://www.mysite.com?name=john&[email protected]&3*J" 
+2

Se supone que la solicitud es ser un POST, no un GET. –

3

Prueba esto:

export CURLNAME="john:@31&3*J" 
curl -d -u "${CURLNAME}" https://www.example.com 
+0

No funciona si el signo de exclamación ("!") Es uno de los caracteres especiales. –

1

acaba de encontrar otras soluciones trabajaron para mí. Puedes usar el signo '\' antes de tu especial.

passwd=\@31\&3*J 
Cuestiones relacionadas