2013-04-09 64 views
0

爲什麼下列打印無?請求正文爲空

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

如果將cnn.com更改爲www.cnn.com,則會打印正確的內容。我注意到一個重定向(在r.history中有一個301)。這是怎麼回事?

+2

它不應該是'requests.request('get',...)'或'requests.get()','requests.post )'? – 2013-04-09 01:00:59

+0

請**複製粘貼**(不要鍵入)**精確**程序來顯示錯誤。請參閱http://sscce.org/。 – 2013-04-09 01:07:31

回答

1

你現在的代碼實際上並不起作用 - 它會立即引發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是不是真的記錄,因爲這是一個重大的改寫。)


作爲一個側面說明...爲什麼你需要這個?如果你真的需要知道你發送了什麼內容,爲什麼不做創建請求併發送它的兩步過程,以便事先看到該內容? (或者,就此而言,只是明確地編碼數據?)