我正在使用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脚本中的变量数据。谢谢
答案 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 complete 或stupid exercise