为什么下列打印无?请求正文为空
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
更改为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是不是真的记录,因为这是一个重大的改写。)
作为一个侧面说明...为什么你需要这个?如果你真的需要知道你发送了什么内容,为什么不做创建请求并发送它的两步过程,以便事先看到该内容? (或者,就此而言,只是明确地编码数据?)
它不应该是'requests.request('get',...)'或'requests.get()','requests.post )'? – 2013-04-09 01:00:59
请**复制粘贴**(不要键入)**精确**程序来显示错误。请参阅http://sscce.org/。 – 2013-04-09 01:07:31