为什么以下打印无?
import requests
r = requests.request('http://cnn.com', data={"foo":"bar"})
print r.request.body
# None
如果将 cnn.com 更改为 www.cnn.com,它会打印正确的正文。我注意到一个重定向(r.history 中有一个 301)。这是怎么回事?
为什么以下打印无?
import requests
r = requests.request('http://cnn.com', data={"foo":"bar"})
print r.request.body
# None
如果将 cnn.com 更改为 www.cnn.com,它会打印正确的正文。我注意到一个重定向(r.history 中有一个 301)。这是怎么回事?
你的代码实际上并不能正常工作——它会立即提出一个TypeError
问题。但我想我可以猜到你想要做什么。
如果将其更改request
为 a post
,它确实会成功返回None
。
为什么?因为您要的是重定向的正文,而不是原始请求的正文。为此,您想要r.history[0].request.body
.
阅读重定向和历史以获取更多信息。请注意,实际上并没有记录自动重定向可用于 POST 请求,即使它经常这样做。另请注意,在早期版本中requests
,history
条目没有完整的Request
对象。(如果您需要知道版本历史何时更改,则必须查看版本历史记录。但它似乎在 1.2.0 中,而不是在 0.14.2 中 - 并且在 1.0 中添加或更改了很多东西.0 并没有真正记录在案,因为它是一次重大的重写。)
作为旁注......你为什么需要这个?如果你真的需要知道你发送了什么body,为什么不做一个创建请求并发送它的两步过程,这样你就可以事先看到body?(或者,就此而言,只是对数据进行显式编码?)