【问题标题】:How to display body and headers before sending POST request?如何在发送 POST 请求之前显示正文和标题?
【发布时间】:2018-05-19 17:26:53
【问题描述】:

我使用库requests

import requests

r = requests.post(url=url, data=data, headers=headers, auth=(self.api_key, ''))

如何在发送 POST 请求之前显示正文和标题?或显示完整的请求是如何发送的?

因为服务器返回 400 HTTP 和消息 Bad Request。所以我需要看看发送的是什么。

当我这样做时:

print r.request.body

返回:

subcategory_id=1378&category_id=45&features=id&features=value&features=id&features=value&features=id&features=value&offer_type=18979

但身体是:

data = {
            'category_id': category_id,
            'subcategory_id': subcategory_id,
            'offer_type': offer_type,
            'features': [
                {"id": "7", "value": "12900"},
                {"id": "12", "value": "Title adadadadasdasdadad"},
                {"id": "16", "value": ["3360383821"]}
          ]
        }

这怎么可能?

【问题讨论】:

  • 或者,如果可能,您可以使用curl -v -X POST -H ... -d <data> url 并查看服务器之间的交互。或者 postman 如果您更喜欢 GUI。

标签: python python-2.7 python-requests


【解决方案1】:
r.url
r.headers
r.body

应该在终端中工作,可能需要在脚本中打印出来

您也不需要“url=url”,您可以将其保留为“url”,假设这是您存储要发布到的基础的位置。

【讨论】:

  • 不好,它只返回 url,而不是完整的请求
  • 对了,把 r.headers 和 r.body 命令添加进去看看剩下的部分
  • 再次查看我的问题
【解决方案2】:

r.request 是您需要的对应的Request 对象。

import requests

r = requests.post(url=url, data=data, headers=headers, auth=(self.api_key, ''))
print r.request.headers
print r.request.body

您可以在收到回复后进行操作,一切都会在那里。见PreparedRequest

至于您编辑的问题,请使用requests.post(url=url, json=data, ...)

【讨论】:

  • 你能再看看我的问题吗?
【解决方案3】:

您可以使用门户httpbin.org 进行测试。它会发回您的所有数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    • 2017-08-31
    • 2015-12-22
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    • 2019-05-16
    相关资源
    最近更新 更多