2014-02-15 62 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框架。 –