请求正文空

时间:2013-04-09 00:55:52

标签: python http python-requests

为什么以下打印无?

import requests
r = requests.request('http://cnn.com', data={"foo":"bar"})
print r.request.body
# None

如果您将cnn.com更改为www.cnn.com,它会打印正确的正文。我注意到了一个重定向(r.history中有一个301)。发生了什么事?

1 个答案:

答案 0 :(得分:2)

您的代码实际上并不起作用 - 它会立即引发TypeError。但我想我可以猜到你想要做什么。

如果您将request更改为post,它确实会成功返回None

为什么呢?因为您要求重定向的正文,而不是原始请求的正文。为此,您需要r.history[0].request.body

阅读Redirection and History了解详情。请注意,自动重定向实际上并未记录为适用于POST请求,即使它经常会发生。另请注意,在早期版本的requests中,history条目没有完整的Request个对象。 (你需要看看version history,如果你需要知道什么时候发生了变化。但它似乎存在于1.2.0中,而不是0.14.2中 - 并且很多东西都被添加或者1.0.0中的更改并未真正记录,因为它是一次重大改写。)


作为旁注......你为什么需要这个?如果你真的需要知道你发送了什么样的身体,为什么不做两步创建请求并发送它,所以你可以事先看到身体? (或者,就此而言,只是明确地对数据进行编码?)