Python - 通过Telnet从POST获取值

时间:2014-02-16 12:40:16

标签: python post telnet

我正在使用localhost来测试python脚本,我需要通过telnet测试它,我正在使用PuTTY。我有这个python脚本:

@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主体获取它们。如果我尝试这样的话:

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

和同样的python方法一样,结果将是“错误的”。我正在使用Flask框架。这是我的功课,所以我不能使用curl,只能使用telnet,因为我只测试服务器端,我不能使用任何形式。所以我想问一下如何从POST中获取值到python脚本中的变量数据。谢谢

2 个答案:

答案 0 :(得分:1)

在HTTP上,标题和数据之间有一个空行。 你发帖应该看起来像:

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

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

您可能还需要发送内容长度标题。

答案 1 :(得分: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

在Google中搜索我发现与您相似的练习案例。 Telnet's POST completestupid exercise