2017-10-06 61 views
0

我試圖用Python中的POST方法查詢服務器。在Python中HTTP POST&302重定向

import requests 

url = "https://www.test.com/service" 
data = {"param": "value"} 

req = requests.post(url, data).content 

當我看着req,它顯然沒有考慮到我發佈的數據。

如果我請與捲曲頭:

curl -ik -X POST -d "param=value" https://www.test.com/service 

我得到以下HTTP 302

HTTP/1.1 302 Déplacé Temporairement 
Date: Fri, 06 Oct 2017 16:42:36 GMT 
Server: Apache-Coyote/1.1 
X-Content-Type-Options: nosniff 
X-XSS-Protection: 1; mode=block 
Cache-Control: no-cache, no-store, max-age=0, must-revalidate 
Pragma: no-cache 
Expires: 0 
Location: https://www.test.com/redirect 
Content-Language: fr-FR 
Content-Length: 0 
Via: 1.1 www.test.com 

所以,如果我的理解很好,我重定向到Location這是https://www.test.com/redirect。該地址只能用GET方法查詢;如果我嘗試使用POST,則會出現HTTP 500錯誤。

我的理解是,我POST帶參數的請求,我被重定向到另一個頁面,請求變成GET,查詢Location。我不明白我的參數會發生什麼:在我的瀏覽器中,我得到一個答案,考慮到發送的參數,當我用手查詢它們時,它們似乎「丟失」了,因爲我只是得到一個空的版本https://www.test.com/redirect

我錯過了什麼?我對請求的理解很淺,所以我確信我錯過了一些明顯的東西。

回答

0

正確的語法使用requests.postrequests

import requests 

url = "https://www.test.com/service" 
data = {"param":"value"} 

req = requests.post(url, data).content 
+0

我編輯了我的問題,這是一個不幸的錯字。我沒有使用正確的語法,我確實有這個問題。如果我犯了這個錯誤,從[我的經驗](https://stackoverflow.com/questions/46422307/post-method-in-python-errno-104),它應該會觸發'104錯誤'! – MBR