urlencoded example curl urlencode

example - ¿Por qué Curl trunca esta cadena de consulta?



curl post urlencoded (2)

Creo que puedes probar esto:

curl -v -L -d "lat=41.225&lon=-73.1" http://localhost:5000/pulse

por defecto, esto llama a POST. Si desea enviar una solicitud GET

curl -v -L -G -d "lat=41.225&lon=-73.1" http://localhost:5000/pulse

Más...
y como está utilizando localhost , si tuviera que usar https , probablemente quiera incluir -k como una opción para ignorar los errores del certificado.

Gracias a Ross por señalar esto.

Estoy seguro de que la respuesta a esto va a ser un problema de codificación de caracteres dolorosamente obvio ...

Estoy usando curl en la línea de comandos para probar algunos puntos finales en una aplicación de Python. El punto final toma los parámetros url de latitud y longitud. Nada muy especial. Puse el comando:

curl -v -L http://localhost:5000/pulse/?lat=41.225&lon=-73.1

El servidor responde, con salida de curl detallado:

* Connected to localhost (127.0.0.1) port 5000 (#0) > GET /pulse/?lat=41.225 HTTP/1.1 > User-Agent: curl/7.21.6 (i686-pc-linux-gnu) libcurl/7.21.6 OpenSSL/1.0.0e zlib/1.2.3.4 libidn/1.22 librtmp/2.3 > Host: localhost:5000 > Accept: */* > * HTTP 1.0, assume close after body < HTTP/1.0 500 INTERNAL SERVER ERROR < Content-Type: application/json < Content-Length: 444 < Server: Werkzeug/0.8.1 Python/2.7.2+ < Date: Wed, 01 Feb 2012 17:06:29 GMT < { "msg": "TypeError: float() argument must be a string or a number", "flag": 0, "stack": [ "Traceback (most recent call last):", " File /"engine.py/", line 139, in dispatch_request", " return getattr(self, ''action_''+endpoint)(request, **values)", " File /"engine.py/", line 818, in action_getpulse", " lon = float(request.args.get(''lon''))" ], "err": 1 * Closing connection #0 } [1]+ Done

En la segunda línea de ese vuelco, es obvio que el segundo param, lon , no se envía. ¿Qué estoy haciendo mal? Gracias.


La respuesta a la pregunta "¿qué estoy haciendo mal?" Es que el proyectil ve el símbolo ( & ) y cree que ese es el final del comando (y lo pone en segundo plano). Debe citarlo, por lo que las respuestas que citaron la cadena funcionan. Usted podría simplemente ejecutar esto:

curl -v -L "http://localhost:5000/pulse/?lat=41.225&lon=-73.1"