2014-02-15 100 views
0

我正在使用localhost來測試python腳本,我需要通過telnet測試它,我使用的是PuTTY。我有這個python腳本:使用telnet運行python腳本

@app.route('/add/', methods=['POST']) 
def add_entry(): 
    db = get_db() 
    db.execute('insert into entries (title, text) values (?, ?)', 
       ("value_from_telnet", "another_value_from_telnet")) 
    db.commit() 
    print("Saved") 
    return "Saved" 

現在我不知道如何連接到127.0.0.1/add以及如何將值放入POST方法。我無法使用連接這樣的:

$ o 127.0.0.1/add 

如果我試試這個:

$ o 127.0.0.1 
$ GET/HTTP/1.0 
$ Host: 127.0.0.1/add 

然後將結果404 NOT FOUND(通過瀏覽器,它的工作原理,但只有靜態插入值和GET方法)。所以我想問一下如何連接到這個地址127.0.0.1/add並將值傳入POST方法以將它們用作數據庫的插入值?謝謝

+0

我相信你可以用telnet來做到這一點。您可能忘了添加尾部斜線:'$ Host:127.0.0.1/add /'。 – solusipse

回答

2

使用捲曲,而不是:curl -v -X POST 'http://<ip.address.of.server>/add' --data "title=foo&text=baz and spam and eggs"

在遠程登錄後,你需要指定這樣的請求主體:

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

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

如果你想建立從字典查詢字符串你需要urllib

import urllib 

params = {title:"foo",text:"baz and spam and eggs"} 

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

""",urlencode(params) 
+0

對不起,但我需要使用telnet。這是我們的作業和telnet是一個條件 –

+0

偉大的,現在它的工作。但我有一個問題,它只適用於靜態插入值。我應該把什麼,而不是(「value_from_telnet」,「another_value_from_telnet」)從POST身體(標題和文本值)取值? –

+0

感謝編輯,但我認爲這樣的事情:db.execute('插入到條目(標題,文本)值(?,?)', (request.form [「title」],request.form [「text」 ])),但我只得到了400 BAD REQUEST。那麼應該改爲request.form [「title」]來從變量標題或值baz中獲取值foo,以及來自變量文本的垃圾郵件和雞蛋?但我不想使用任何形式。我正在使用Flask框架。 –