2017-08-08 84 views
0

downvoting前/標記爲重複,請注意:的Python POST請求不採取表單數據,沒有文件

我已經嘗試了thisthisthisthisthisthis - 基本上幾乎所有我能找到的方法指出Requests documentation,但似乎沒有找到任何解決方案。

問題:

我想和一組頭和表單數據的POST請求。 有沒有被上傳文件。按照在郵遞員請求體中,我們通過下爲請求的「主體」部分中選擇「表單數據」設置的參數。 這裏是我的代碼:

headers = {'authorization': token_string, 
      'content-type':'multipart/form-data; boundary=----WebKitFormBoundaryxxxxxXXXXX12345'} # I get 'unsupported application/x-www-form-url-encoded' error if I remove this line 

body = { 
    'foo1':'bar1', 
    'foo2':'bar2', 
    #... and other form data, NO FILE UPLOADED 
    } 
#I have also tried the below approach 
payload = dict() 
payload['foo1']='bar1' 
payload['foo2']='bar2' 
page = '' 
page = requests.post(url, proxies=proxies, headers=headers, 
json=body, files=json.dump(body)) # also tried data=body,data=payload,files={} when giving data values 

錯誤

{"errorCode":404,"message":"Required String parameter 'foo1' is not 
present"} 

編輯: 添加網絡控制檯的痕跡。我在請求負載中提到的負載中以相同的方式定義它。

Network from dev-tools, I am defining it in the same way in the payload as mentioned

+0

什麼,當你不通過'內容type'頭髮生在所有?只需在頭文件中傳遞'authorization'。刪除請求中的'files = json.dump(body)',並用'data = body'替換'json = body' –

+0

您可以共享Chrome網絡標籤中的所有請求信息嗎? –

+0

@PratikMandrekar如果我刪除'content-type',我會得到'不支持的應用程序/ x-www-form-url-encoded'錯誤。'data = body'是我嘗試的第一件事,沒有工作:( – user2281204

回答

0

沒有任何GUI呢?你可以得到從鍍鉻網數據顯示,雖然: 試試這個:

headers = {'authorization': token_string} 

有可能是更多的授權?還是smthng別的?

你不應該添加的Content-Type爲請求會爲您處理。

重要的是,你可以從「名」變量看到的內容類型WebKitFormBoundary,所以對於有效載荷,你必須採取的數據。

例子:enter image description here (我知道你不會上傳任何文件,它只是一個例子) - 因此,在這種情況下,我的有效載荷應該是這樣的:有效載荷= {「照片」:「myphoto」} (是啊,會有一個打開的文件等等等等,但我儘量保持簡單)

所以,你的有效載荷將是這個 - >(所以總是從WebKit的使用名稱)

payload = {'foo1':'foo1data', 
      'foo2':'foo2data'} 


session.post(url,data = payload, proxies etc...) 

重要!正如我所看到的,您可以使用請求庫中的方法。首先,你總是應該創建一個這樣的會話

session = requests.session() - >它將處理cookie,頭文件等,並且不會打開新的會話,或者每個requests.get/post 。

+0

添加網絡數據。即使使用session.post,沒有'content-type'我也會得到'{「errorCode」:404,「message」:「內容類型'application/x-www-form-urlencoded'不支持}} ' – user2281204