Ich bin sicher, die Antwort darauf wird ein schmerzlich offensichtliches Problem bei der Zeichenkodierung sein ...
Ich verwende Curl in der Befehlszeile, um einige Endpunkte in einer Python-App zu testen. Der Endpunkt verwendet URL-Parameter für Breite und Länge. Nichts Besonderes. Ich habe den Befehl eingegeben:
curl -v -L http://localhost:5000/pulse/?lat=41.225&lon=-73.1
Der Server antwortet mit einer ausführlichen Curl-Ausgabe:
* 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
In der zweiten Zeile dieses Dumps ist es offensichtlich, dass der zweite Parameter lon
nicht gesendet wird. Was mache ich falsch? Vielen Dank.
Antworten:
Die Antwort auf die Frage "Was mache ich falsch?" Lautet, dass die Shell das kaufmännische Und (
&
) sieht und denkt, dass dies das Ende des Befehls ist (und es in den Hintergrund stellt). Sie müssen es zitieren, weshalb die Antworten, die den String zitieren, funktionieren. Sie können dies genauso gut ausführen:quelle
Ich denke, Sie können dies versuchen:
Standardmäßig wird POST aufgerufen. Wenn Sie eine GET-Anfrage senden möchten
Mehr ...
und da Sie verwenden
localhost
,https
möchten Sie wahrscheinlich-k
als Option zum Ignorieren von Zertifikatfehlern einschließenVielen Dank an Ross für diesen Hinweis.
quelle
-G
wechseln?