【问题标题】:How to send and receive HTTP POST requests in Python [closed]如何在 Python 中发送和接收 HTTP POST 请求 [关闭]
【发布时间】:2016-06-28 07:59:20
【问题描述】:

我需要一个可以在 HTTP POST 请求中发送布尔值的简单客户端方法,以及一个侦听并将 POST 内容保存为 var 的服务器端函数。

我无法找到有关如何使用 httplib 的信息。

请给我看一个简单的例子,使用 localhost 进行 http 连接。

【问题讨论】:

    标签: python http http-post httplib


    【解决方案1】:

    对于客户端,作为内置选项,您可以使用 urllib.request 模块。对于更高级别的客户,请尝试requests。它非常直观且易于使用/安装。

    对于服务器端,我建议您使用小型 Web 框架,例如 Flask、Bottle 或 Tornado。这些非常容易使用,而且重量轻。

    例如,使用请求发送 post 变量 foo 的小型客户端代码如下所示:

    import requests
    r = requests.post("http://yoururl/post", data={'foo': 'bar'})
    # And done.
    print(r.text) # displays the result body.
    

    使用flask接收和使用POST请求的服务器端代码如下所示:

    from flask import Flask, request
    app = Flask(__name__)
    @app.route('/', methods=['POST'])
    def result():
        print(request.form['foo']) # should display 'bar'
        return 'Received !' # response to your request.
    

    这是使用 python 发送/接收 POST 请求的最简单、最快捷的方法。

    【讨论】:

    • 嘿!感谢您的回答,但我认为我对我需要做什么还不够清楚。例如,我有一台运行服务器脚本的计算机,另一台运行客户端脚本的计算机。客户端需要发送一个真正的 var 来判断他是否还活着,这需要是一个 http 请求,所以我真的没有 url,只是一个IP地址。
    • Url 当然可以是IP地址。你唯一需要改变的是,而不是把yoururl 你会做yourip。域名只是 ip 的文字表示,因此在使用网络时工作方式相同。
    • 很抱歉提出这个愚蠢的问题,但我有点困惑。 r.text 是什么,在客户端,foo 和 bar,它们代表什么? (并且不知道是否改变了一些东西,但两个脚本都在 linux 上运行,服务器端在安装了 appache 的 linux 上运行)
    • 没问题。使用 requests 库发送请求时,您将结果作为对象(存储在示例中的变量“r”中)。该对象的属性之一是“文本”,其中包含结果正文(例如 html 作为响应)。 Foo 和 bar 只是键/值对的一个随机示例(想象一下,如果您创建一个带有用户和密码字段的表单,request.form['user'] 将为您提供在该字段中输入的数据,对于请求也是如此。表单['密码']
    • 非常感谢!还有一个问题,当我在我的 linux 服务器上安装 apache 并且现在他是一个 web 服务器时,他知道如何接收 post/get 请求,或者你需要用 PHP 或类似的东西编写一些东西?
    猜你喜欢
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 2017-11-17
    相关资源
    最近更新 更多