【问题标题】:Python - get values from POST via TelnetPython - 通过 Telnet 从 POST 获取值
【发布时间】:2014-03-15 16:40:50
【问题描述】:

我正在使用 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 脚本中的变量数据。谢谢

【问题讨论】:

标签: python post telnet


【解决方案1】:

在 HTTP 上,标题和数据之间有一个空行。 您的帖子应如下所示:

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

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

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

【讨论】:

  • 但是当我在 PuTTY 中按下两次输入以获取标题和数据之间的行时,将在没有 POST 值的情况下执行请求。
  • 奇怪。您是否尝试使用 telnet 而不是 putty ?如果 if 不起作用,最好使用 curl 或 wget 进行测试。您还可以制作一个非常简单的 python 脚本来发出 post 请求。
  • 在 Windows 7 上使用 telnet 我遇到了问题。我必须用 telnet 测试它,这是我作业的条件。而且根据我的python脚本真的很简单。
  • 你可以试试 cygwin 的 telnet,它应该比 windows 原生的更标准。
【解决方案2】:

一般来说,在编程内部,当使用 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

【讨论】:

    猜你喜欢
    • 2012-08-11
    • 2020-03-23
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 2017-01-03
    • 2014-09-01
    • 2017-04-30
    • 2019-01-12
    相关资源
    最近更新 更多