2014-02-16 72 views
0

我使用localhost測試python腳本,我需要通過telnet測試它,我使用的是PuTTY。我有這樣的python腳本:Python - 通過Telnet從POST獲取值

@app.route('/add', methods=['GET', 'POST']) 
def add_entry(): 
    db = get_db() 
    data = request.args.get('title', '') 
    if not data: 
     data = "wrong" 
    return data 

當我使用這樣的telnet命令:

$ GET /add?title=foo&text=baz+and+spam+and+eggs HTTP/1.0 

的反應是正確的:

HTTP/1.0 200 OK 
Content-Type: text/html; charset=utf-8 
Content-Length: 3 
Server: Werkzeug/0.9.4 Python/3.3.3 
Date: Sun, 16 Feb 2014 12:31:50 GMT 

foo 

但我需要通過POST和我不發送值我怎麼才能從郵政正文獲得他們。如果我嘗試這樣的東西:

$ POST /add HTTP/1.1 
$ Content-type:application/x-http-form-urlencoded  
$ title=foo&text=baz+and+spam+and+eggs 

和相同的python方法,結果將是「錯誤的」。我正在使用Flask框架。這是我的作業,所以我不能使用捲曲,只有telnet,因爲我只測試服務器端,我不能使用任何形式。所以我想問如何從POST中獲取值到python腳本中的變量數據。謝謝

+0

可能重複http://stackoverflow.com/questions/21803663/run-python-script-with-telnet – markcial

回答

1

在HTTP上,標題和數據之間有空行。 你後應該是這樣的:

POST /add HTTP/1.1 
Content-type:application/x-http-form-urlencoded 

title=foo&text=baz+and+spam+and+eggs 

您可能還需要發送的內容長度的頭。

+0

但是,當我按在膩子輸入兩次獲得頭和數據之間的行會執行沒有POST值的請求。 –

+0

奇怪。你用telnet而不是膩子試了嗎? 如果不起作用,最好用curl或wget進行測試。你也可以製作一個非常簡單的python腳本來發布帖子請求。 –

+0

在Windows 7上使用telnet我遇到問題。我必須用telnet來測試它,這是我作業的條件。而根據我的python腳本非常簡單。 –

1

一般來說,在編程中,使用方法POST時會有一個「multipart/form-data」。 當您發送圖像或文件時,使用方法POST的表單內部有一個enctype =「multipart/form-data」。

你可以試試:

POST /add HTTP/1.1 
Content-Type: multipart/form-data; boundary=---------------------------41184676334 
Content-type:application/x-http-form-urlencoded 
Content-Length: 3 //is better that you put a 216 

搜索在谷歌,我覺得你類似案件的鍛鍊。 Telnet's POST complete 或者stupid exercise