爲什麼下列打印無?請求正文爲空
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