如何在发送 POST 请求之前显示正文和标头?

Ali*_*ice 4 python python-2.7 python-requests

我使用一个图书馆requests

import requests

r = requests.post(url=url, data=data, headers=headers, auth=(self.api_key, ''))
Run Code Online (Sandbox Code Playgroud)

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

因为服务器返回 400 HTTP 并带有消息 Bad Request。所以我需要看看发送了什么。

当我做:

print r.request.body
Run Code Online (Sandbox Code Playgroud)

它返回:

subcategory_id=1378&category_id=45&features=id&features=value&features=id&features=value&features=id&features=value&offer_type=18979
Run Code Online (Sandbox Code Playgroud)

但身体是:

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"]}
          ]
        }
Run Code Online (Sandbox Code Playgroud)

这怎么可能?

xia*_*.li 5

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
Run Code Online (Sandbox Code Playgroud)

你可以在收到回复后进行操作,一切都还在那里。请参阅PreparedRequest

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