Estoy seguro de que la respuesta a esto será un problema de codificación de caracteres dolorosamente obvio ...
Estoy usando curl en la línea de comando para probar algunos puntos finales en una aplicación de Python. El punto final toma parámetros de URL de latitud y longitud. Nada muy especial. Pongo el comando:
curl -v -L http://localhost:5000/pulse/?lat=41.225&lon=-73.1
El servidor responde, con una salida de curl detallada:
* 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 volcado, es obvio que el segundo parámetro, lon
no se envía. ¿Qué estoy haciendo mal? Gracias.
Respuestas:
La respuesta a la pregunta, "qué estoy haciendo mal", es que el shell ve el ampersand (
&
) 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. Podrías ejecutar esto con la misma facilidad:fuente
Creo que puedes probar esto:
de forma predeterminada, esto llama POST. Si desea enviar una solicitud GET
Más ...
y dado que está usando
localhost
, si fuera a usarhttps
, probablemente desee incluir-k
como una opción para ignorar los errores de certificadoGracias a Ross por señalar esto.
fuente
-G
cambiar?