Saya yakin jawaban untuk ini adalah masalah pengkodean karakter yang sangat jelas ...
Saya menggunakan curl pada baris perintah untuk menguji beberapa titik akhir di aplikasi python. Titik akhir mengambil parameter url lintang dan bujur. Tidak ada yang terlalu istimewa. Saya memasukkan perintah:
curl -v -L http://localhost:5000/pulse/?lat=41.225&lon=-73.1
Server merespons, dengan keluaran curl verbose:
* 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
Pada baris kedua dari dump itu, jelas bahwa parameter kedua lon
,, tidak terkirim. Apa yang saya lakukan salah? Terima kasih.
Jawaban:
Jawaban atas pertanyaan, "apa yang saya lakukan salah," adalah bahwa shell melihat ampersand (
&
) dan berpikir bahwa itu adalah akhir dari perintah (dan meletakkannya di latar belakang). Anda perlu mengutipnya, itulah mengapa jawaban yang mengutip string itu berhasil. Anda dapat dengan mudah menjalankan ini:sumber
Saya pikir Anda bisa mencoba ini:
secara default, ini memanggil POST. Jika Anda ingin mengirim permintaan GET
Lebih banyak ...
dan karena Anda menggunakan
localhost
, jika Anda akan menggunakanhttps
, Anda mungkin ingin menyertakan-k
sebagai opsi untuk mengabaikan kesalahan sertifikatTerima kasih kepada Ross karena telah menunjukkan ini.
sumber
-G
beralih?